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

新手上路,请多包涵

我有这个查询:

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

它给了我 o/p 作为

ID

一个

无效的

无效的

无效的

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

原文由 Red Devil 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 694
2 个回答

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

原文由 Mureinik 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

或者,如果您想展示一些其他值而不是 nullCASE 语句中使用 else 部分。

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

原文由 Unnikrishnan R 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进