【case when 用法】在SQL查询中,`CASE WHEN` 是一种非常实用的条件判断语句,用于根据不同的条件返回不同的值。它类似于编程语言中的 `if-else` 逻辑,但专为数据库查询设计。通过 `CASE WHEN`,可以实现数据的动态分类、转换和筛选。
以下是对 `CASE WHEN` 的总结与使用方法说明:
一、基本语法结构
```sql
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
...
ELSE 默认结果
END
```
- 条件:可以是任何返回布尔值的表达式。
- 结果:可以是常量、字段、表达式等。
- ELSE:可选,当所有条件都不满足时返回的默认值。
二、常见应用场景
应用场景 | 示例 |
数据分类 | 根据分数划分等级(优秀、良好、及格) |
值转换 | 将性别代码转为“男”或“女” |
条件筛选 | 按不同条件显示不同的描述信息 |
动态计算 | 根据业务规则计算不同的数值 |
三、示例说明
示例1:根据成绩划分等级
```sql
SELECT
name,
score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS grade
FROM students;
```
示例2:将性别代码转换为中文
```sql
SELECT
id,
gender_code,
CASE
WHEN gender_code = 'M' THEN '男'
WHEN gender_code = 'F' THEN '女'
ELSE '未知'
END AS gender
FROM users;
```
示例3:根据部门设置不同奖金
```sql
SELECT
employee_name,
department,
salary,
CASE
WHEN department = '销售部' THEN salary 0.1
WHEN department = '技术部' THEN salary 0.05
ELSE 0
END AS bonus
FROM employees;
```
四、注意事项
注意事项 | 说明 |
条件顺序 | `WHEN` 条件应按优先级排序,避免逻辑冲突 |
数据类型 | 返回的结果类型应保持一致,否则可能导致错误 |
空值处理 | 若字段可能为空,建议添加 `IS NULL` 判断 |
可读性 | 复杂逻辑建议使用注释或换行提高可读性 |
五、总结
`CASE WHEN` 是SQL中处理条件逻辑的强大工具,适用于多种数据处理场景。合理使用可以提升查询效率和数据可读性。掌握其基本语法和使用技巧,能有效增强SQL查询的灵活性和实用性。