SQL - 有条件地将列值设置为NULL

时间:2016-06-30 07:33:35

标签: sql postgresql

我有一个表 - some_table,其中包含多个列,其中一些列在某些行中有一些无效值,需要转换为NULL

我不能使用下面的原因因为变异原始表不允许一个权限,并且还需要对所有列名重复。

UPDATE some_table TABLE@@ SET column_name = NULL WHERE column_name = 'invalid value';

所以它需要成为一个' SELECT'创建一个无效值转换为NULL的新表的操作 - 有一个快速的方法吗?

使用@Jonny下面的答案进行更新

NULLIF是个不错的选择。但是有没有办法将它应用于所有列,而不是分别为每个列执行 - 有时列的数量非常大。

2 个答案:

答案 0 :(得分:1)

您可以使用NULLIF

看看9.16.3。 NULLIF https://www.postgresql.org/docs/current/static/functions-conditional.html

SELECT NULLIF('invalid value', column_name)
FROM some_table

答案 1 :(得分:0)

如下:

INSERT INTO some_table2 (column_name, ...) SELECT * FROM some_table WHERE column_name <> 'invalid value';
INSERT INTO some_table2 (column_name, ...) SELECT null, ... FROM some_table WHERE column_name = 'invalid_value';