SQL中CASE WHEN按从上到下顺序逐条匹配,遇首个为TRUE的WHEN即返回对应THEN值并跳过后续分支;NULL需用IS NULL判断;顺序错误或缺ELSE易致逻辑异常。
SQL 中 CASE WHEN 的执行顺序是**从上到下、逐条匹配**,一旦某条 WHEN 条件为 TRUE,就立即返回对应的 THEN 结果,并**跳过后续所有分支**,包括后面的 WHEN 和 ELSE。

数据库不会预先计算所有条件,也不会优化或重排 WHEN 子句。它按书写顺序依次判断:
因为 NULL = NULL 返回 FALSE(不是 TRUE),所以用 WHEN column = NULL 永远不会命中。正确写法是:
WHEN column IS NULLWHEN column IS NULL THEN '未知'
例如想分类年龄,但把范围写反了:
CASE WHEN age >= 18 THEN '|成人|' WHEN age >= 0 THEN '未成年' END
CASE WHEN age >= 18 THEN '|成人|' ELSE '未成年' ENDCASE WHEN age >= 18 THEN '|成人|' WHEN age BETWEEN 0 AND 17 THEN '未成年' ELSE '年龄无效' END
如果所有 WHEN 都不满足,且没有定义 ELSE,则整个 CASE 表达式结果为 NULL。这在聚合、连接或 WHERE 过滤中可能引发意外行为,建议显式加上 ELSE 分支兜底。