前言:遇到这样一个需求,有一门成绩,成绩中只记录了学生的分数,现在需要统计学生的分数等级,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
结果如下
还有是根据不同的值去更新数据
需求是根据RelationResourceCode 前四位的值 更新RelationResourceType 的值
BZWX--》standard
JGGF--》specification
DXAL--》case
ZCFG--》policy
ZSCT--》knowledgeitem
语句如下:
update ResourceRelations set RelationResourceType = ( CASE left(RelationResourceCode,4) WHEN 'BZWX' THEN 'standard' WHEN 'JGGF' THEN 'specification' WHEN 'DXAL' THEN 'case' WHEN 'ZCFG' THEN 'policy' WHEN 'ZSCT' THEN 'knowledgeitem' END )
结果如下