MYSQL case when 的用法

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

结果如下

原文地址:https://www.cnblogs.com/ningy1009/p/13672949.html