2015-04-12 66 views
0

我正在使用PostgreSQL 9.3。根据实际值更新varchar列

我在表中有一个varchar列可以为空,我想根据它的值更新它是否为null。

我没做一个函数,它接受一个字符串作为参数,并更新这样的值:指定的参数
如果列为空,该函数连接当前字符串值,逗号和字符串,否则它只在当前字符串值的末尾添加字符串(不含逗号)。

那么如何根据要更新的列值进行不同的更新?

回答

1

您可以使用case语句来有条件地更新列:

update the_table 
    set the_colum = case 
        when the column is null then 'foobar' 
        else the_column||', '||'foobar' 
        end 
+0

谢谢您的回答!这正是我所期待的。 – Simon

1

的另一种方法

UPDATE foo 
SET bar = COALESCE(NULLIF(concat_ws(', ', NULLIF(bar, ''), NULLIF('a_string', '')), ''), 'a_string') 
+0

好的,谢谢!你知道这种方法是否能提供更好的性能结果? – Simon

+0

@ user3683807需要测试:)对于这一点,它取决于数据 –