casewhen函数
【casewhen函数】在SQL语言中,`CASE WHEN` 是一种非常常用且强大的条件判断语句,它允许用户根据不同的条件返回不同的值。通过 `CASE WHEN`,可以实现类似于编程语言中的 `if-else` 逻辑,广泛应用于数据筛选、字段转换、分类统计等场景。
一、`CASE WHEN` 函数简介
`CASE WHEN` 的基本语法结构如下:
```sql
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
```
- `condition`:判断条件,通常为布尔表达式。
- `result`:当条件满足时返回的值。
- `ELSE`:当所有条件都不满足时返回的默认值(可选)。
该函数可以根据不同条件动态地生成新的字段值,是处理复杂业务逻辑的重要工具。
二、`CASE WHEN` 的使用场景
| 使用场景 | 说明 |
| 数据分类 | 根据数值范围对数据进行分类(如将销售额分为高/中/低)。 |
| 字段转换 | 将某些特定值替换为更易读的文本(如将“0”转为“否”,“1”转为“是”)。 |
| 条件筛选 | 在查询中根据条件选择性地显示数据。 |
| 多条件判断 | 实现多个条件分支的逻辑控制。 |
三、`CASE WHEN` 示例
示例1:根据分数划分等级
```sql
SELECT name, score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'D'
END AS grade
FROM students;
```
结果示例:
| name | score | grade |
| 张三 | 85 | B |
| 李四 | 92 | A |
| 王五 | 68 | D |
示例2:将状态码转换为描述信息
```sql
SELECT order_id, status,
CASE
WHEN status = 1 THEN '已下单'
WHEN status = 2 THEN '已支付'
WHEN status = 3 THEN '已发货'
ELSE '未知状态'
END AS status_desc
FROM orders;
```
结果示例:
| order_id | status | status_desc |
| 1001 | 2 | 已支付 |
| 1002 | 3 | 已发货 |
| 1003 | 4 | 未知状态 |
四、`CASE WHEN` 的注意事项
| 注意事项 | 说明 |
| 条件顺序 | `CASE WHEN` 是按顺序判断的,一旦满足某个条件,后续条件不再检查。 |
| 默认值 | `ELSE` 是可选的,不写的话如果没有条件满足,会返回 `NULL`。 |
| 性能影响 | 过多嵌套或复杂的条件可能会影响查询性能,应合理优化。 |
| 数据类型 | 返回值的数据类型应保持一致,避免因类型不匹配导致错误。 |
五、总结
`CASE WHEN` 是SQL中用于条件判断的核心函数之一,具有高度灵活性和实用性。通过合理的使用,可以显著提升数据处理的效率与可读性。掌握其语法结构与使用场景,有助于在实际开发中更好地应对各种业务需求。








casewhen函数