贝利信息

SQL 中 CASE WHEN 的执行顺序

日期:2026-01-21 00:00 / 作者:舞夢輝影
SQL中CASE WHEN按从上到下顺序逐条匹配,遇首个为TRUE的WHEN即返回对应THEN值并跳过后续分支;NULL需用IS NULL判断;顺序错误或缺ELSE易致逻辑异常。

SQL 中 CASE WHEN 的执行顺序是**从上到下、逐条匹配**,一旦某条 WHEN 条件为 TRUE,就立即返回对应的 THEN 结果,并**跳过后续所有分支**,包括后面的 WHEN 和 ELSE。

件匹配是严格顺序的

数据库不会预先计算所有条件,也不会优化或重排 WHEN 子句。它按书写顺序依次判断:

NULL 判断需显式处理

因为 NULL = NULL 返回 FALSE(不是 TRUE),所以用 WHEN column = NULL 永远不会命中。正确写法是:

常见陷阱:顺序颠倒导致逻辑错误

例如想分类年龄,但把范围写反了:

没有匹配时返回 NULL

如果所有 WHEN 都不满足,且没有定义 ELSE,则整个 CASE 表达式结果为 NULL。这在聚合、连接或 WHERE 过滤中可能引发意外行为,建议显式加上 ELSE 分支兜底。