CASE WHEN语句是SQL中常用的一种条件表达式。它可以根据指定的条件对数据进行分类,然后根据不同的分类执行不同的操作。
CASE WHEN语句的基本格式如下:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
WHEN valuen THEN resultn
ELSE default_result
END
其中expression是要进行比较的值或表达式,value1、value2等是expression可能取到的值,result1、result2等是相应情况下的返回结果,default_result是当expression与所有的value都不匹配时的默认返回结果。
在使用CASE WHEN语句时,需要注意以下几点:
- 可以有多个WHEN子句,但只能有一个ELSE子句。
- 如果没有匹配的WHEN子句,且没有ELSE子句,则返回NULL。
- CASE WHEN语句的返回结果类型必须是一致的。
下面通过一个示例说明CASE WHEN语句的使用方法。假设我们有一个存储学生成绩的表Scores,其中包括了每个学生的姓名(Name)、科目(Subject)和成绩(Score)三个字段。现在我们想要按照以下规则将学生成绩分为三类:优秀(Score>=90),良好(Score>=70且Score<90)和及格(Score<70)。可以使用如下SQL语句来实现:
SELECT Name, Subject, Score,
CASE WHEN Score>=90 THEN '优秀'
WHEN Score>=70 AND Score<90 THEN '良好'
ELSE '及格'
END AS Grade
FROM Scores;
在这个例子中,我们使用CASE WHEN语句根据学生的成绩将其分为三类,并返回相应的等级。注意,在SELECT语句中需要为CASE WHEN语句指定一个别名(这里是Grade),以便在结果集中正确显示。