2015-04-12 2 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 Нужен тест :) для этого, это зависит от данных –

Смежные вопросы