前言:遇到这样一个需求,有一门成绩,成绩中只记录了学生的分数,现在需要统计学生的分数等级,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
结果如下