SQL基础:详解SQL之CASE WHEN具体用法

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语句,实现更加高效、精准的数据处理。

数据库标签