我有一个非常奇怪的逻辑,我用自定义可空字段获取自定义表。
如何将表中的所有NULL值更改为0?
抱歉,但我的意思是自定义字段 我不知道列的名称!
答案 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 *
答案 3 :(得分:1)
UPDATE mytable SET mycol = 0 WHERE mycol IS NULL