CASE WHEN THEN ELSE END 是SQL中实现条件逻辑的核心表达式,支持单字段匹配和多条件判断,适用于数据处理、分类统计等场景。
基本语法形式
SQL中CASE表达式有两种标准形式:
1 简单CASE表达式(字段直接匹配)
CASE 字段
WHEN 值1 THEN 结果1
WHEN 值2 THEN 结果2
ELSE 默认结果
END
示例:CASE gender WHEN 'M' THEN '男' ELSE '未知' END
12
2、搜索CASE表达式(支持复杂条件)。
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
ELSE 默认结果
END
示例:CASE WHEN salary>5000 THEN '高收入' WHEN salary>3000 THEN '中等收入' ELSE '低收入' END
3 4
核心功能特性
- 短路执行机制:仅返回首个满足条件的THEN结果,后续条件不再评估。56
- ELSE可选性:省略ELSE子句时默认返回NULL。7
- 结果类型一致性:所有THEN结果和ELSE结果必须保持相同数据类型。8
典型应用场景
1 数据分类标注。
SELECT product_name,
CASE WHEN price > 100 THEN '高价商品'
WHEN price > 50 THEN '中价商品'
ELSE '平价商品'
END AS price_level
FROM products;
2.动态分组统计。
SELECT
CASE WHEN age < 18 THEN '未成年'
WHEN age BETWEEN 18 AND 60 THEN '成年人'
ELSE '老年人'
END AS age_group,
COUNT(*) AS user_count
FROM users
GROUP BY age_group;
3 条件聚合计算。
SELECT department,
SUM(CASE WHEN status = 'completed' THEN amount ELSE 0 END) AS total_completed,
SUM(CASE WHEN status = 'pending' THEN amount ELSE 0 END) AS total_pending
FROM orders
GROUP BY department;
NULL值处理:需显式使用IS NULL
判断,如WHEN field IS NULL THEN '空值'
11