SQL - 在自定义表中将null替换为0

时间:2011-04-04 10:20:41

标签: sql tsql sql-server-2008

我有一个非常奇怪的逻辑,我用自定义可空字段获取自定义表。

如何将表中的所有NULL值更改为0?

抱歉,但我的意思是自定义字段 我不知道列的名称!

4 个答案:

答案 0 :(得分:5)

UPDATE custom_table
   SET the_column = 0
 WHERE the_column IS NULL;

答案 1 :(得分:3)

通过查询sys.columns和sys.objects,您可以生成一个查询,该查询将每个列更改为您要为其设置默认非空值的列类型的默认值(由您指定)。

这样的东西会给你一些东西:

SELECT  so.name, 
        sc.name AS varname ,
        st.name AS typename ,
        sc.max_length ,
        sc.[precision] ,
        sc.scale ,
        sc.collation_name
FROM    sys.columns sc
        JOIN SYS.types st ON sc.system_type_id = st.system_type_id
                             AND sc.user_type_id = st.user_type_id
        JOIN sys.objects so ON so.object_id = sc.object_id

然后,您可以为此附加游标,并根据typename(列类型)和varname(列名)运行一系列alter / update命令。

答案 2 :(得分:2)

如果你的意思是在所有列中,那么你可以做一个非常昂贵的查询,它将触及所有记录和列:

UPDATE mytable
SET
col1 = isnull(col1, 0),
col2 = isnull(col2, 0),
col3 = isnull(col3, 0),
col4 = isnull(col4, 0),
col5 = isnull(col5, 0)
-- etc all the numeric columns *
  • 如果您包含日期列,则会转到“1900-01-01”

答案 3 :(得分:1)

UPDATE mytable SET mycol = 0 WHERE mycol IS NULL