我正在使用PostgreSQL 9.3。根据实际值更新varchar列
我在表中有一个varchar
列可以为空,我想根据它的值更新它是否为null。
我没做一个函数,它接受一个字符串作为参数,并更新这样的值:指定的参数
如果列为空,该函数连接当前字符串值,逗号和字符串,否则它只在当前字符串值的末尾添加字符串(不含逗号)。
那么如何根据要更新的列值进行不同的更新?
我正在使用PostgreSQL 9.3。根据实际值更新varchar列
我在表中有一个varchar
列可以为空,我想根据它的值更新它是否为null。
我没做一个函数,它接受一个字符串作为参数,并更新这样的值:指定的参数
如果列为空,该函数连接当前字符串值,逗号和字符串,否则它只在当前字符串值的末尾添加字符串(不含逗号)。
那么如何根据要更新的列值进行不同的更新?
您可以使用case
语句来有条件地更新列:
update the_table
set the_colum = case
when the column is null then 'foobar'
else the_column||', '||'foobar'
end
的另一种方法
UPDATE foo
SET bar = COALESCE(NULLIF(concat_ws(', ', NULLIF(bar, ''), NULLIF('a_string', '')), ''), 'a_string')
好的,谢谢!你知道这种方法是否能提供更好的性能结果? – Simon
@ user3683807需要测试:)对于这一点,它取决于数据 –
谢谢您的回答!这正是我所期待的。 – Simon