我有一个表 - some_table
,其中包含多个列,其中一些列在某些行中有一些无效值,需要转换为NULL
。
我不能使用下面的原因因为变异原始表不允许一个权限,并且还需要对所有列名重复。
UPDATE some_table TABLE@@ SET column_name = NULL WHERE column_name = 'invalid value';
所以它需要成为一个' SELECT'创建一个无效值转换为NULL
的新表的操作 - 有一个快速的方法吗?
使用@Jonny下面的答案进行更新
NULLIF
是个不错的选择。但是有没有办法将它应用于所有列,而不是分别为每个列执行 - 有时列的数量非常大。
答案 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';