将所有0值设置为NULL

时间:2010-11-22 12:41:44

标签: sql sql-server sql-server-2005

如何在SQL表中将所有0值设置为NULL?

提前致谢。

4 个答案:

答案 0 :(得分:14)

update table set col = null where col = 0

答案 1 :(得分:3)

UPDATE MYTABLE SET MYCOLUMN = NULL WHERE MYCOLUMN = 0

但你的意思是在所有专栏中?这将是更多的工作,并且您只需为每列创建单独的语句。也可以在存储过程和EXEC中读取模式并生成SQL,但我不建议这样做,因为我认为这是一次性工作,如果你经常这样做,那么设计的东西是错误的。

答案 2 :(得分:2)

UPDATE MyTable
SET Col1 = NULLIF(Col1, 0),
    Col2 = NULLIF(Col2, 0),
    Col3 = NULLIF(Col3, 0)
WHERE (Col1 = 0 
    OR Col2 = 0 
    OR Col3 = 0)

答案 3 :(得分:1)

如果是一次性作业,您可以随时从以下语句中获取输出并执行该操作。

SELECT  'UPDATE ' 
        + OBJECT_NAME(OBJECT_ID)
        + ' SET '
        + sc.name
        + ' = NULL WHERE '
        + sc.name
        + ' = 0'        
FROM    sys.columns sc 
        INNER JOIN sys.types st ON st.system_type_id = sc.system_type_id
WHERE   st.name IN ('bigint', 'int', 'smallint')        
        AND OBJECT_NAME(OBJECT_ID) = 'YourTable'