【问题标题】:How to remove 'NULL' from results of queries SQL Server 2008如何从 SQL Server 2008 查询结果中删除“NULL”
【发布时间】:2016-03-16 21:02:07
【问题描述】:

我有一个包含 59 列和超过 17K 行的表。许多行在某些列中有NULL

我想删除 NULL 以便查询返回空白 ('') 而不是 NULL

我可以运行一些更新功能,将所有NULL 替换为'' 吗?

使用 SQL Server 2008R2 Management Studio。

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

但要对所有 59 列执行此操作需要很长时间!

有什么诀窍,团队?

【问题讨论】:

  • 您的replace() 不起作用。

标签: sql sql-server replace sql-server-2008-r2 null


【解决方案1】:

使用 isnull 函数。如果在列中找到 null,则返回指定值

Select isnull(col1,'')

【讨论】:

  • 这是一个有用的功能,我将在其他地方使用,但不是我今天想要的。
【解决方案2】:

使用 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 中不可用。 (嗯,有细微的差别,read the manual for detailseven more detail here。)

当然,空字符串('')只对字符串类型有效。例如,不适用于数字类型。

【讨论】:

    【解决方案3】:

    试试这个:

    UPDATE yourtable SET column1 = ' '  WHERE column1 = NULL
    

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 2013-05-17
      相关资源
      最近更新 更多