为何SQL CASE语句未执行第二个WHEN分支,返回结果为1?
为什么CASE语句只返回1而不执行第二个WHEN分支?
先看你写的SQL语句:
SELECT CASE WHEN 1 = 1 THEN 1 WHEN 1 = 1 THEN 2 ELSE 0 END
输出结果是1,原因很简单——SQL的CASE语句是顺序匹配、短路执行的:
- 它会逐个检查WHEN后面的条件,只要碰到第一个结果为真的条件,就立刻执行对应的THEN返回值,然后直接结束整个CASE判断
- 你的第一个WHEN条件
1=1显然是成立的,所以直接返回1,后面的第二个WHEN和ELSE分支根本不会被执行
要是想让第二个WHEN生效,只要把第一个WHEN的条件改成不成立的就行,比如:
SELECT CASE WHEN 1 = 2 THEN 1 -- 这个条件不成立 WHEN 1 = 1 THEN 2 -- 走到这里,返回2 ELSE 0 END
内容的提问来源于stack exchange,提问作者Deenathayalan T
相关产品推荐
相关产品推荐

