我有一个包含 59 列和超过 17K 行的表。很多行都有NULL
在某些列中。
我想删除NULL
以便查询返回空白(''
)而不是NULL
.
我可以运行一些更新功能来替换所有NULL
with ''
?
使用 SQL Server 2008R2 Management Studio。
UPDATE my_table
SET column_1 = REPLACE (column_1,NULL,'')
但要对所有 59 列执行此操作将需要很长时间!
团队有什么技巧?
使用 SQL 标准COALESCE https://msdn.microsoft.com/en-us/library/ms190349.aspx:
UPDATE my_table
SET column_1 = COALESCE(column_1,'')
, column_2 = COALESCE(column_2,'')
...
WHERE column_1 IS NULL OR
column_2 IS NULL OR
... -- avoid empty updates
;
然后使用ALTER TABLE ...
to add NOT NULL
对所有不得有 NULL 的列进行约束,以禁止重新引入 NULL 值。
不要使用ISNULL
,基本上是标准的重复COALESCE
在某些 RDBMS 中 - 而在其他 RDBMS 中不可用。 (嗯,有细微的差别,阅读手册了解详细信息 https://msdn.microsoft.com/en-us/library/ms190349.aspx or 更详细的信息在这里 http://sqlmag.com/t-sql/coalesce-vs-isnull.)
当然,空字符串(''
) 仅对字符串类型有效。例如,不适用于数字类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)