我们可以在没有else语句的情况下编写case语句

时间:2016-10-18 07:21:10

标签: sql sql-server sql-server-2008 select case

我有这个问题:

select case when id=1 then 'A'
when id=2 then 'B'
end 
from test

它正在给我o / p

  

标识
  一个
  乙
  NULL
  NULL
  NULL

我不希望在输出中有NULL个值,我只想在A和B中进行比较,是否可以在case语句中使用。

3 个答案:

答案 0 :(得分:6)

case表达式只能操作表达式的值,而不能从结果中删除行。如果要从结果中省略null s,则必须添加where子句:

SELECT CASE WHEN id = 1 THEN 'A'
            WHEN id = 2 THEN 'B'
       END 
FROM   test
WHERE  id IN (1, 2) -- HERE

答案 1 :(得分:1)

您可以使用WHERE子句来限制输出。

SELECT CASE WHEN id=1 THEN 'A'
WHEN id=2 THEN 'B'
END 
FROM test
WHERE id IN (1,2)

或者,如果您想展示其他值而不是null,请在else语句中使用CASE部分。

SELECT CASE WHEN id=1 THEN 'A'
WHEN id=2 THEN 'B' ELSE 'Invalid'
END 
FROM test

答案 2 :(得分:0)

给你:

select case when id=1 then 'A'
when id=2 then 'B'
end 
from test
where id is not null 

或者这个:

select case when id=1 then 'A'
when id=2 then 'B'
end 
from test
where id <> null