我们可以不使用ELSE语句来编写CASE语句吗

2022-03-03 00:00:00 sql select sql-server-2008 sql-server case

我有以下查询:

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

它给我的O/P为

ID
A
B


我不想在我的输出中有NULL值,我只想在A和B中进行比较,在CASE语句中可以吗?


解决方案

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

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

相关文章