CASE WHEN语句用法:复杂条件判断,实战场景全覆盖

📅 2026/7/15 10:46:52
CASE WHEN语句用法:复杂条件判断,实战场景全覆盖
前言日常开发中经常需要做复杂条件判断状态翻译、等级划分、多条件统计、数据分类。如果只用 WHERE、IF 判断代码繁琐且难以维护。CASE WHEN是SQL中的「if-else if-else」支持多条件、多分支、复杂逻辑判断是数据分析、报表统计、数据格式化的神器。一、CASE WHEN 两种语法格式1、简单等值判断适合固定值匹配CASE 字段 WHEN 值1 THEN 结果1 WHEN 值2 THEN 结果2 ELSE 默认结果 END2、复杂条件判断适合范围、多条件、逻辑运算最常用CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ELSE 默认结果 END二、实战场景1状态字段文字翻译数据库存数字状态1/2/3前端需要展示文字状态无需后端代码处理SQL直接转换。SELECT id, name, CASE gender WHEN 1 THEN 男 WHEN 2 THEN 女 ELSE 未知 END AS gender_text FROM user;三、实战场景2数据等级划分根据年龄划分用户年龄段实现数据分类统计。SELECT name, age, CASE WHEN age 18 THEN 未成年 WHEN age BETWEEN 18 AND 30 THEN 青年 WHEN age BETWEEN 31 AND 50 THEN 中年 ELSE 老年 END AS age_level FROM user;四、实战场景3多条件统计汇总结合聚合函数统计不同状态的数据数量实现行转列统计。SELECT COUNT(CASE WHEN gender 1 THEN 1 END) AS male_count, COUNT(CASE WHEN gender 2 THEN 1 END) AS female_count FROM user;五、CASE WHEN 核心避坑点1、条件从上到下匹配匹配到第一个条件即终止优先条件放前面2、ELSE 可省略不匹配任何条件默认返回 NULL建议手动指定默认值3、所有分支返回的数据类型必须一致否则会报错或数据错乱。