Z
ZHANK
编程在线教程SQL 教程条件表达式 CASE WHEN
函数与计算

条件表达式 CASE WHEN

用 CASE WHEN 实现 IF-ELSE 逻辑、分类统计

条件表达式 CASE WHEN

SQL 里的 CASE WHEN 就是 if-else——根据条件返回不同结果,在查询中做逻辑判断。

学完本章你将: 掌握简单 CASE、搜索 CASE、在聚合中使用 CASE。


基本语法 —— 搜索 CASE

sql
SELECT name, age,
    CASE
        WHEN age < 18 THEN '未成年'
        WHEN age < 60 THEN '成年人'
        ELSE '老年人'
    END AS age_group
FROM users;

⚠️ WHEN 按顺序匹配,满足第一个条件后就停止。所以条件从严格到宽松排列。


简单 CASE(等值比较)

sql
SELECT name,
    CASE city
        WHEN '北京' THEN '一线'
        WHEN '上海' THEN '一线'
        WHEN '广州' THEN '一线'
        ELSE '其他'
    END AS city_level
FROM users;

CASE 在聚合中

CASE 最强大的用法是条件聚合——分类统计:

sql
-- 统计各年龄段人数
SELECT
    COUNT(CASE WHEN age < 18 THEN 1 END) AS 未成年,
    COUNT(CASE WHEN age >= 18 AND age < 60 THEN 1 END) AS 成年人,
    COUNT(CASE WHEN age >= 60 THEN 1 END) AS 老年人
FROM users;

每个 CASE WHEN ... THEN 1 END:满足条件返回 1,不满足返回 NULL,COUNT 自动跳过 NULL。