SQL中的CASE WHEN语句用于根据条件对查询结果进行分类,它允许你在查询中添加逻辑,以便根据满足的条件返回不同的值,CASE WHEN语句的基本语法如下:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE resultN END;
condition1、condition2等是要测试的条件,result1、result2等是对应条件成立时返回的结果,ELSE子句是可选的,当所有条件都不满足时,将返回ELSE子句中的结果。
下面我们通过一个具体的例子来说明CASE WHEN的用法:
假设我们有一个名为employees的表,包含以下字段:id(员工ID)、name(员工姓名)、salary(员工薪水),现在我们想要根据员工的薪水等级对其进行分类,可以使用以下SQL语句:
SELECT id, name, salary, CASE WHEN salary < 5000 THEN '低级' WHEN salary >= 5000 AND salary < 10000 THEN '中级' WHEN salary >= 10000 THEN '高级' ELSE '未知' END as level FROM employees;
这个查询将返回一个包含员工ID、姓名、薪水和薪水等级的新表,薪水等级分为四个级别:低级、中级、高级和未知。
除了基本的WHEN-THEN结构外,还可以使用IFNULL函数处理可能的空值,如果某个员工的薪水为空,我们希望将其视为“未知”等级,可以使用以下SQL语句:
SELECT id, name, IFNULL(salary, '未知') as salary, CASE WHEN salary < 5000 THEN '低级' WHEN salary >= 5000 AND salary < 10000 THEN '中级' WHEN salary >= 10000 THEN '高级' ELSE '未知' END as level FROM employees;
还可以使用多个WHEN子句来实现更复杂的条件判断,我们想要根据员工的薪水等级和职位对其进行分类:
SELECT id, name, salary, CASE WHEN position = '经理' AND salary >= 10000 THEN '高级经理' WHEN position = '经理' AND salary < 10000 THEN '中级经理' WHEN position = '主管' AND salary >= 5000 THEN '高级主管' WHEN position = '主管' AND salary < 5000 THEN '中级主管' WHEN position = '员工' AND salary >= 5000 THEN '高级员工' WHEN position = '员工' AND salary < 5000 THEN '中级员工' ELSE '未知' END as level FROM employees;
这个查询将返回一个包含员工ID、姓名、薪水和职位等级的新表,职位等级分为五个级别:高级经理、中级经理、高级主管、中级主管和高级员工,其他级别的职位将被归类为“未知”。
相关问题与解答:
问题1:如何在CASE WHEN语句中使用多个WHEN子句?答案:在CASE WHEN语句中,可以使用多个WHEN子句来实现多条件判断,只需按照需要的顺序编写WHEN子句即可。
SELECT id, name, salary, CASE WHEN position = '经理' AND salary >= 10000 THEN '高级经理' WHEN position = '经理' AND salary < 10000 THEN '中级经理' WHEN position = '主管' AND salary >= 5000 THEN '高级主管' WHEN position = '主管' AND salary < 5000 THEN '中级主管' WHEN position = '员工' AND salary >= 5000 THEN '高级员工' WHEN position = '员工' AND salary < 5000 THEN '中级员工' ELSE '未知' END as level FROM employees;
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/165851.html