SQL语句Case When Then多条件判断

本文深入解析SQL中的CASE函数使用场景,特别关注其在条件判断时的执行逻辑与优先级处理,通过具体案例说明当多个条件同时满足时,CASE函数如何仅返回首个符合条件的值,并忽略后续相同层级的条件。

总结记录:

SQL片段如下

CASE WHEN col_1 IN ( 'a', 'b') THEN '一类'
         WHEN col_1 IN ('a')       THEN '二类'
ELSE'其他' END

注:case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略,假设col_1
为a,则执行结果为:一类。后续符合的分支被忽略。

以下是一些常见的包含`CASE WHEN THEN`的 SQL 语句示例: ### 数据转换 假设有一个表`employees`,其中包含字段`gender`表示性别,用数字 1 代表男性,2 代表女性。可以使用`CASE WHEN THEN`将数字转换为对应的文字描述: ```sql SELECT name, CASE gender WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '未知' END AS gender_text FROM employees; ``` 该示例通过`CASE WHEN`语句,根据`gender`字段的值进行判断,将 1 转换为“男”,2 转换为“女”,其他值转换为“未知”,并将结果以`gender_text`列输出 [^2]。 ### 条件判断与状态分类 在审核流程中,根据`审核`字段的值判断审批状态: ```sql SELECT CASE WHEN 审核='否' THEN '终止' WHEN 审核='是' THEN '完成' ELSE '审批中' END AS 审批状态; ``` 此示例根据`审核`字段的值,将其状态分为“终止”“完成”和“审批中”三种情况 [^3]。 ### 范围判断 假设有一个`students`表,包含`score`字段表示学生的成绩,根据成绩范围进行等级划分: ```sql SELECT name, CASE WHEN score >= 90 THEN '优秀' WHEN score >= 80 AND score < 90 THEN '良好' WHEN score >= 60 AND score < 80 THEN '及格' ELSE '不及格' END AS grade FROM students; ``` 该示例根据`score`字段的值所在的范围,将成绩划分为“优秀”“良好”“及格”和“不及格”四个等级。 ### 多条件组合判断 假设有一个`orders`表,包含`amount`字段表示订单金额,`status`字段表示订单状态。根据订单金额和状态进行综合判断: ```sql SELECT order_id, CASE WHEN amount > 1000 AND status = '已支付' THEN '大额已支付订单' WHEN amount <= 1000 AND status = '已支付' THEN '小额已支付订单' WHEN status = '未支付' THEN '未支付订单' ELSE '其他订单' END AS order_type FROM orders; ``` 此示例根据`amount`和`status`两个字段的值进行组合判断,将订单分为不同的类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值