-2
money
20.00
17.87
5.00
NULL
3.00

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

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

3 回答 3

3
select coalesce(money, 0) from mytable

Coalesce 将采用列表中的第一个非空值。

于 2013-06-04T18:19:13.270 回答
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,然后知道如何去做就很方便了。

于 2013-06-04T18:32:58.903 回答
2

尝试:

SELECT IsNull(money, 0)
FROM mytable

编辑
如果要替换表中的值:

UPDATE mytable
SET money = 0
WHERE money Is Null
于 2013-06-04T18:18:44.553 回答