1. CASE WHEN语句的基本语法
CASE WHEN语句是SQL中一种常用的流程控制语句,用于根据指定条件来执行不同的操作。其基本语法如下所示:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
其中,condition表示要判断的条件,result表示符合条件后要执行的操作,ELSE子句可选,表示所有条件都不符合时要执行的操作。
1.1 示例
假设有如下员工表emp:
emp_id name salary
1001 张三 5000
1002 李四 6000
1003 王五 7000
1004 赵六 8000
现在需要根据员工的薪水等级,将其分为高、中、低三档。可以使用CASE WHEN语句来实现:
SELECT name,
CASE
WHEN salary > 7000 THEN '高'
WHEN salary > 6000 THEN '中'
ELSE '低'
END AS '薪水等级'
FROM emp;
运行上述SQL语句,得到如下结果:
name 薪水等级
张三 低
李四 中
王五 高
赵六 高
可以看到,根据员工薪水的不同,将其分为了高、中、低三档,并使用AS关键字给其取了一个别名“薪水等级”。
2. CASE WHEN语句的高级用法
除了基本用法外,CASE WHEN语句还有一些高级用法,可以帮助我们更加方便灵活地使用它。
2.1 IN子句
CASE WHEN语句中的condition可以使用IN子句,用于判断某个字段的值是否在指定的一组值中。示例如下:
SELECT name,
CASE department_id
WHEN 1 THEN '部门1'
WHEN 2 THEN '部门2'
WHEN 3 THEN '部门3'
ELSE '未知部门'
END AS '部门名称'
FROM emp;
上述示例中使用了等值判断,但如果有多个需要判断的值时,使用IN子句会更加方便,示例如下:
SELECT name,
CASE department_id
WHEN 1 THEN '部门1'
WHEN 2 THEN '部门2'
WHEN 3 THEN '部门3'
ELSE '未知部门'
END AS '部门名称'
FROM emp;
2.2 BETWEEN子句
CASE WHEN语句中的condition还可以使用BETWEEN子句,用于判断某个字段的值是否在指定范围内。示例如下:
SELECT name,
CASE
WHEN salary BETWEEN 5000 AND 6000 THEN '收入一般'
WHEN salary BETWEEN 6000 AND 8000 THEN '收入不错'
ELSE '收入不错'
END AS '收入状况'
FROM emp;
2.3 嵌套CASE WHEN语句
有时候,我们需要根据多个条件来判断输出的结果。此时可以使用嵌套CASE WHEN语句来实现。示例如下:
SELECT name,
CASE
WHEN salary > 8000 THEN '高收入'
WHEN salary > 6000 THEN
CASE
WHEN department_id = 1 THEN '部门1'
WHEN department_id = 2 THEN '部门2'
ELSE '未知部门'
END
ELSE '收入较低'
END AS '备注'
FROM emp;
运行上述SQL语句,可以看到输出结果如下:
name 备注
张三 收入较低
李四 部门2
王五 部门1
赵六 高收入
可以看到,根据不同的薪水和部门情况,输出了相应的结果。
3. 总结
以上就是关于CASE WHEN语句的详细讲解。CASE WHEN语句是SQL中一种常用的流程控制语句,用于根据指定条件来执行不同的操作。除了基本用法外,它还有一些高级用法,比如IN子句、BETWEEN子句和嵌套CASE WHEN语句等。在实际应用中,可以根据需要灵活使用CASE WHEN语句,实现更加高效、精准的数据处理。