无法从NULL更新为0

时间:2014-06-26 12:59:28

标签: sql sql-server database sql-server-2008 dbo

您好我正在使用此命令将另一个表连接到一个表,该表具有更多记录但仍保持打印NULL。我希望NULL变为0。

SELECT * FROM TABLE1

Left JOIN Table2 ON TABLE1.ID=Table2.IDRel

UPDATE Table2 SET IDRel = 0 where IDRel = NULL

4 个答案:

答案 0 :(得分:4)

不应该需要更新。 正如您所说的那样,Table2 has a little more records是关键,这意味着对于Table1中没有找到匹配IDRel值的任何行,{(1}})列将保留{{1 }}

现在你可以使用IDRel将空值替换为0,但是NULL代替ISNULL(IDRel, 0)可能会得到正确的结果,抛弃所有不能的行匹配...

但是......如果你确实要更新该列,只有在对INNER JOINLEFT JOIN而不是NULL)进行正确比较时才会更新该列,这意味着要改变您的更新查询到:

IS

答案 1 :(得分:2)

即使需要更新吗?

SELECT T1.*, coalesce(t2.IDREL,0) as IDREL 
FROM TABLE1 T1
Left JOIN Table2 ON TABLE1.ID=Table2.IDRel

答案 2 :(得分:0)

使用此查询

 UPDATE Table2 SET IDRel = 0 where IDRel is NULL

答案 3 :(得分:0)

使用IS NUll

SELECT * FROM TABLE1

Left JOIN Table2 ON TABLE1.ID=Table2.IDRel

UPDATE Table2 SET IDRel = 0 where IDRel IS  NULL