SQL case 0然后是NULL

时间:2015-08-27 13:53:40

标签: sql case

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

SELECT ID, 
       Firstname, 
       Lastname, 
       CASE Number 
         WHEN 0 THEN NULL 
       END
  FROM tPerson

错误:

  

CASE规范中至少有一个结果表达式必须是   除NULL常量之外的表达式。

提前致谢!

6 个答案:

答案 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