如何从 SQL Server 2008 查询的结果中删除“NULL”

3

我有一张表格,59列,超过17K行。很多行在某些列上有NULL

我想要删除NULL,使查询返回一个空白值(''),而不是NULL

我能运行某个更新函数,将所有的NULL替换为''吗?

使用 SQL Server 2008R2 管理工具。

UPDATE my_table
SET column_1 = REPLACE (column_1,NULL,'')

但是把这个方法应用到所有59列上需要很长时间!

团队,有什么技巧吗?


你的 replace() 不起作用。 - Gordon Linoff
3个回答

7
使用isnull函数。如果在列中发现空值,则返回指定的值。
Select isnull(col1,'')

这是一个有用的功能,我会在其他地方使用它,但今天不是我正在寻找的。 - Bevan

7

使用SQL标准的COALESCE函数:

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 ...NOT NULL约束添加到所有不应有NULL的列中,以禁止重新引入NULL值。
不要使用ISNULL,它基本上是一些RDBMS中标准COALESCE的复制品,而在其他RDBMS中则不可用。(好吧,有微妙的差别,请阅读手册以了解详细信息在此处获取更多详细信息。)
当然,空字符串('')仅适用于字符串类型,例如数字类型则不适用。

0

试试这个:

UPDATE yourtable SET column1 = ' '  WHERE column1 = NULL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接