【蛻變之路】第28天 case when then else end (2019年3月18日)

    Hello,大家好!我是程序員阿飛!今天我們主要學習一下SQL中 case when then else end用法  

    1、第一種情況

        【語法】

            CASE 表達式1

                WHEN 表達式2 THEN 表達式3

                ...

                WHEN 表達式4 THEN 表達式5

                [ELSE 表達式6]

                END

        【原理】

            將表達式1的值與各WHEN字句後面的表達式的值進行比較,如果兩者相等,則返回THEN後面的值,然後跳出case語句,

            否則返回ELSE子句中的表達式的值。ELSE子句是可選項,當case語句中不包含else子句時,若所有比較都失敗,則case語句

            將返回NULL。

        【例子】從數據表stud_info中,選取stud_id、grade,如果grade爲“男”則輸出“M”,如果爲“女”輸出“F”。

            SELECT stud_id, sex=CASE gender

                          WHEN ’男’ THEN ’M’

                          WHEN ’女’ THEN ’F’

                        END

            FROM stud_info

        2、第二種情況

          【語法】

            CASE WHEN 表達式2 THEN 表達式3

                ...

                WHEN 表達式4 THEN 表達式5

                [ELSE 表達式6]

                END

            【原理】

              首先測試WHEN後的條件表達式的值,如果其值爲真,則返回THEN後面的表達式的值,否則測試下一個WHEN子句中的表達式的值,

              如果所有WHEN子句後的表達式的值都爲假,則返回ELSE後的表達式的值,如果在CASE語句中沒有ELSE子句,則CASE表達式返回NULL。

            【例子】從stud_grade表中查詢所有同學考試成績情況,凡成績爲空者輸出“未考”、小於60分輸出“不及格”、60分至70分輸出“及格”、

                  70分至90分輸出“良好”、大於或等於90分時輸出“優秀”。

                  SELECT

                      stud_id,

                      NAME,

                      score = CASE

                  WHEN grade IS NULL THEN

                      ’未考’

                  WHEN grade < 60 THEN

                      ’不及格’

                  WHEN grade >= 60

                  AND grade < 70 THEN

                      ’及格’

                  WHEN grade >= 70

                  AND grade < 90 THEN

                      ’良好’

                  WHEN grade >= 90 THEN

                      ’優秀’

                  END

                  FROM

                      stud_grade

        【PS】

                414BDB8F537C2C9D82A68F62F7A26126.jpg

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章