当我的表中的数字为0时,我想得到NULL。我可以使用SQL实现这个吗?
SELECT ID,
Firstname,
Lastname,
CASE Number
WHEN 0 THEN NULL
END
FROM tPerson
错误:
CASE规范中至少有一个结果表达式必须是 除NULL常量之外的表达式。
提前致谢!
答案 0 :(得分:9)
正如其他人所说,如果号码不为空,你忘了告诉你的CASE语句返回号码。
但是在SQL Server中你可以使用NULLIF,我认为它更具可读性:
select
id,
firstname,
lastname,
nullif(number, 0) as number
from tperson;
如果您想坚持使用标准SQL,请继续使用CASE:
case when number = 0 then null else number end as number
答案 1 :(得分:2)
您可能需要ELSE
:
SELECT
ID, Firstname, Lastname CASE Number WHEN 0 THEN NULL ELSE Number END
FROM tPerson
答案 2 :(得分:1)
SELECT ID, Firstname, Lastname,
CASE WHEN Number!=0 THEN Number END
FROM tPerson
答案 3 :(得分:0)
尝试:
SELECT ID, Firstname,
Lastname,
CASE Number WHEN 0 THEN NULL ELSE Number END
FROM tPerson
答案 4 :(得分:0)
在MySQL中,您还可以使用if
:
select if(number = 0, null, number) ...
答案 5 :(得分:0)
您可以将IIF()与sql server 2012及更高版本一起使用
SELECT ID,
Firstname,
Lastname,
IIF(Number = 0, NULL, Number) as Number
END
FROM tPerson