当语句替换Null数据时

时间:2013-06-04 18:15:43

标签: sql-server-2008

money
20.00
17.87
5.00
NULL
3.00

我希望将空条目变为零。钱栏是用于花钱的。我尝试了以下内容,它不喜欢将NUll更改为美元值。

select case money when 'NULL'  then  0  end
from mytable

3 个答案:

答案 0 :(得分:3)

select coalesce(money, 0) from mytable

Coalesce将获取列表中的第一个非空值。

答案 1 :(得分:2)

尝试:

SELECT IsNull(money, 0)
FROM mytable

修改
如果您想替换表格中的值:

UPDATE mytable
SET money = 0
WHERE money Is Null

答案 2 :(得分:2)

虽然我同意其他两个答案,但我还是要解释为什么你所做的不对。

select case money when 'NULL'  then  0  end
from mytable

这里将NULL视为字符串值。但NULL是条件而不是值。这意味着没有已知的价值。如果您将实际单词'null'插入该字段中的表中,那么您的代码就可以工作了。

如果要测试NULL条件,请使用:

WHERE field1 IS NULL 

或使用coalesce或ISNULL更改值。如果你需要测试NULL作为case语句的一部分,那么你会这样做:

CASE WHEN field1 IS NULL THEN 0 ELSE T1 END

对于像你这样的简单案例,COALESCE或ISNULL是最好的。但有时您可能需要做一个非常复杂的CASE,然后知道如何做它很方便。