SQL case 0然后是NULL

xyr*_*ron 5 sql case

当我的表中的数字为0时,我想得到NULL.我可以使用SQL实现这一点吗?

SELECT ID, 
       Firstname, 
       Lastname, 
       CASE Number 
         WHEN 0 THEN NULL 
       END
  FROM tPerson
Run Code Online (Sandbox Code Playgroud)

错误:

CASE规范中的至少一个结果表达式必须是NULL常量以外的表达式.

提前致谢!

Tho*_*ner 11

正如其他人提到的那样,如果数字不为空,你忘了告诉你的CASE语句返回数字.

但是在SQL Server中你可以使用NULLIF,我认为它更具可读性:

select 
  id, 
  firstname, 
  lastname, 
  nullif(number, 0) as number
from tperson;
Run Code Online (Sandbox Code Playgroud)

如果您想坚持使用标准SQL,请继续使用CASE:

case when number = 0 then null else number end as number
Run Code Online (Sandbox Code Playgroud)