1. 程式人生 > 實用技巧 >MYSQL case when 的用法

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
    ) 

結果如下