根据实际值更新varchar列

时间:2015-04-12 17:35:12

标签: postgresql function sql-update

我正在使用PostgreSQL 9.3。

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

我没有设法执行一个以String作为参数的函数,并更新这样的值:
如果列为null,则该函数连接当前字符串值,逗号和作为参数给出的字符串,否则它只是在当前字符串值的末尾添加字符串(不带逗号)。

那么如何根据要更新的列值制作不同的更新?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

另一种方法

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