Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL在许多列中为空_Sql Server_Sql Server 2008_Sql Server 2005 - Fatal编程技术网

Sql server SQL在许多列中为空

Sql server SQL在许多列中为空,sql-server,sql-server-2008,sql-server-2005,Sql Server,Sql Server 2008,Sql Server 2005,我必须从许多列中提取空值。我一直在做一些研究,但它告诉我,我可以一次做一个专栏,这将需要很长时间。有更好的办法吗?我现在掌握的代码是: Update table set column1 = 0 where column1 IS NULL 任何帮助或想法都会有帮助。谢谢,Michelle你可能会想要这样的东西 更新表集合column1=COALESCE(column1,0),column2=COALESCE(column2,0),其中column1为NULL或column2为NULL

我必须从许多列中提取空值。我一直在做一些研究,但它告诉我,我可以一次做一个专栏,这将需要很长时间。有更好的办法吗?我现在掌握的代码是:

    Update table set column1 = 0 where column1 IS NULL 

任何帮助或想法都会有帮助。谢谢,Michelle你可能会想要这样的东西

更新表集合column1=COALESCE(column1,0),column2=COALESCE(column2,0),其中column1为NULL或column2为NULL

COALESCE函数将使用第一个非null的数值。这意味着如果column1为null,则使用0。但如果column1为null,则使用0


OR语句将允许您返回任何列1或列2中为null的行,并相应地更新它们。

您可能需要类似的内容

更新表集合column1=COALESCE(column1,0),column2=COALESCE(column2,0),其中column1为NULL或column2为NULL

COALESCE函数将使用第一个非null的数值。这意味着如果column1为null,则使用0。但如果column1为null,则使用0


OR语句将允许您返回任何列1或列2中有null的行,并相应地更新它们。

如果我理解您的意思,您想从跨越多个不同列的表中删除所有null吗?如果审计不是问题,那么您可以这样做:

UPDATE [TABLE]
SET Column1 = 
    CASE 
        WHEN Column1 IS NULL THEN 0
        ELSE Column1
    END,
    Column2 = 
    CASE
        WHEN Column2 IS NULL THEN 0
        ELSE Column2
    END, ....

如果我理解您的意思,您想从跨越多个不同列的表中删除所有空值吗?如果审计不是问题,那么您可以这样做:

UPDATE [TABLE]
SET Column1 = 
    CASE 
        WHEN Column1 IS NULL THEN 0
        ELSE Column1
    END,
    Column2 = 
    CASE
        WHEN Column2 IS NULL THEN 0
        ELSE Column2
    END, ....

我身上没有SSMS实例,或者我靠近一个正在工作的db(我刚刚重新安装了我的box),但现在是使用游标的好时机(因为这似乎是一个一次性请求)。如果这里出现语法错误,请原谅——如果有人看到错误,请随意编辑:)


我身上没有SSMS实例,或者我靠近一个正在工作的db(我刚刚重新安装了我的box),但现在是使用游标的好时机(因为这似乎是一个一次性请求)。如果这里出现语法错误,请原谅——如果有人看到错误,请随意编辑:)


您可以使用ISNULL选项

UPDATE table
   SET column1 = ISNULL(column1, 0)
      ,column2 = ISNULL(column2, 0)
 WHERE column1 IS NULL 
    OR column2 IS NULL;

您可以使用ISNULL选项

UPDATE table
   SET column1 = ISNULL(column1, 0)
      ,column2 = ISNULL(column2, 0)
 WHERE column1 IS NULL 
    OR column2 IS NULL;

这可能是一个愚蠢的问题,但我仍在努力学习sql。我被告知IS NULL返回一个布尔值,不替换一个值,这与coalesce相同吗?coalesce将从左到右返回作为参数发送给它的第一个非NULL值。如果发送的所有值都为null,则返回null。所提供的问题@minitech清楚地说明了thisisnull确实返回布尔值,但是ISNULL(columnName,value)返回columnName列的值,或者如果columnName为NULL,则返回“value”。非常感谢!你帮了我很多!这可能是一个愚蠢的问题,但我仍在努力学习sql。我被告知IS NULL返回一个布尔值,不替换一个值,这与coalesce相同吗?coalesce将从左到右返回作为参数发送给它的第一个非NULL值。如果发送的所有值都为null,则返回null。所提供的问题@minitech清楚地说明了thisisnull确实返回布尔值,但是ISNULL(columnName,value)返回columnName列的值,或者如果columnName为NULL,则返回“value”。非常感谢!你帮了我很多!