2015-05-06 3 views
1

У меня есть таблица базы данных foo, и я хочу заменить null значения, представленные в определенных столбцах с пустой строкой. Для удаления нулевых значений, присутствующих в определенном столбце x, я хотел бы сделать, какКак заменить значения, присутствующие в нескольких столбцах?

update foo set x = '' where x is null; 

Есть в любом случае я хотел бы сделать, как,

update foo set x,y,z = '' where x,y,z is null; 
+1

Но почему ??? Сохраните NULL и замените пустые строки на NULL! – jarlh

+0

Спасибо за все ценные ответы. Извините, я не могу усовершенствовать .. – user197324

ответ

3

Вы можете:

set 
    x = case when x is null then '' else x, 
    y = case when y is null then '' else y, 
    z = case when z is null then '' else z 
    ... 
+0

еще один вопрос .. Что делать, если я хочу удалить значения «null» во всем мире? – user197324

+0

Что вы подразумеваете под удалением и глобально? –

+0

, если 'null' может или не может присутствовать во всех столбцах. Я хочу удалить все нулевые значения (т. Е. Заменить пустой строкой) независимо от имен col (т. Е. Глобальной замены). – user197324

0

проще сделать это:

UPDATE foo SET x='', y='', z='' WHERE x IS NULL AND y IS NULL AND z IS NULL 

Или этот, если вы хотите редактировать только значения, которые являются NULL

UPDATE foo SET x = IF(x IS NULL, '', x), y = IF(y IS NULL, '', y) ... 
+1

Это было бы работать, только если x, y и z были нулевыми –

+0

, он заменит только 'NULL', когда все 3 x, y, z будут NULL – ughai

+0

. Я думаю, что вопрос в том, как замените x и/или y и/или z. – jarlh

1

Это обновит все строки, где любой колонн х, у или г имеет нулевое значение и использует COALESCE function изменять значения только в столбцах где значение является NULL:

UPDATE 
    foo 
SET 
    x = COALESCE(x, ''), 
    y = COALESCE(y, ''), 
    z = COALESCE(z, '') 
WHERE 
    NULL IN (x, y, z) 
+0

Это лучший ответ, но я все еще думаю, что это плохая идея ... – jarlh

0

вы должны попробовать это

UPDATE foo SET x = "", y = "", z = "" WHERE x является NULL и y является NULL, а z является NULL

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