前言:遇到这样一个需求,有一门成绩,成绩中只记录了学生的分数,现在需要统计学生的分数等级,100-90分为优秀,90-60分为及格,60-0分为不及格。这个需求就可以用CASE语句来表达。
case语句分为简单case语句和可搜索case语句。
1.简单case的语法为
CASE case_expression
WHEN when_expression_1 THEN commands
WHEN when_expression_2 THEN commands
...
ELSE commands
END
这种适合固定的值,比如性别,1男,2女这种
例子:将下图中sex换成汉字的性别,1男,2女。
SELECT
*, (
CASE sex
WHEN 1 THEN
'男'
WHEN 2 THEN
'女'
END
) '性别'
FROM
`user`
结果如下图
2.可搜索case语句,这种适应表达式与一组不同的值进行匹配。
语法为
CASE
WHEN condition_1 THEN commands
WHEN condition_2 THEN commands
...
ELSE commands
END
例子就是最开始提到的
SELECT
*,
(
CASE
WHEN score>=90 THEN
'优秀'
WHEN score>=60 THEN
'及格'
ELSE
'不及格'
END
) '等级'
FROM
math
ORDER BY score DESC
结果如下