首页/数据/SQL 速查/CASE 表达式(简单与搜索形式)
本包目录(311 条)

CASE 表达式(简单与搜索形式)

SQL 中的条件分支:简单 CASE 做等值匹配,搜索 CASE 书写任意条件;分支自上而下取首个命中,缺 ELSE 时返回 NULL。

SQL 速查数据更新于 2026-10-12

两种形式

两种形式
-- 简单 CASE:等值匹配
SELECT name,
       CASE level WHEN 1 THEN '低' WHEN 2 THEN '中' ELSE '高' END AS level_name
FROM tasks;

-- 搜索 CASE:任意条件
SELECT score,
       CASE WHEN score >= 90 THEN 'A'
            WHEN score >= 80 THEN 'B'
            ELSE 'C' END AS grade
FROM exams;
简单 CASECASE expr WHEN v THEN r … 用等值比较
搜索 CASECASE WHEN cond THEN r … 依条件匹配
ELSE缺省返回 NULL
匹配只返回首个命中的分支

易错点

  • 简单 CASE 用等值比较,判断 NULL 不会命中任何分支(NULL = NULL 为 UNKNOWN),要用搜索形式 CASE WHEN col IS NULL
  • 忘记 ELSE 时未覆盖的行走 NULL 分支,统计报表里常表现为“莫名少数据”

数据来源与参考

  • MySQL 8.0 Reference Manual · CASE Expression
  • PostgreSQL Documentation · CASE
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌