1. 程式人生 > >CASE WHEN THEN END多條件判斷

CASE WHEN THEN END多條件判斷

CASE WHEN THEN END結構有兩種書寫方式
結構:

CASE 
            WHEN 條件1 THEN 結果1
            WHEN 條件2 THEN 結果2
            WHEN 條件3 THEN 結果3
            .........
            WHEN 條件N THEN 結果N
        END
    方式:
    第一種格式簡單的CASE 函式
CASE SEX 
                WHEN '1' THEN '男'
                WHEN '0'
THEN '女' ELSE '其他' END

第二種格式為CASE搜尋函式

CASE 
            WHEN SEX ='1'  THEN '男'
            WHEN SEX ='0'  THEN '女'
            ELSE '其他' END
    ```

    注意:
    ------------
    這兩種方式,可以實現相同的功能。簡單CASE函式的書寫方法相對比較簡介,但是和CASE搜尋函式相比,功能方面會有些限制,CASE函式只返回一個符合條件的值,剩下的CASE部分將會被忽略。


CASE
的作用還可以做哪些事情 --------------- 有如下資料 國家(county) 人口(population) 中國 600 美國 100 加拿大 100 英國 200 法國 300 日本 250 德國 200 墨西哥 50 印度 250 根據這個國家人口資料,統計亞洲和北美洲的人口數量 亞洲 1100 北美洲 250 其他 700 現在看看CASE
 WHEN THEN是如何操作的

SELECT 
SUM(POPULATION),
CASE COUNTRY
WHEN 中國  THEN ‘亞洲’
WHEN 美國 THEN ‘北美洲 ’
WHEN 加拿大 THEN ‘北美洲 ’
WHEN 日本 THEN ‘亞洲’
WHEN 墨西哥 THEN ‘北美洲 ’
WHEN 印度 THEN ‘亞洲’
ELSE ‘其他’ END

 FROM TABLE_A GROUP BY CASE COUNTRY
WHEN 中國  THEN ‘亞洲’
WHEN 美國 THEN ‘北美洲 ’
WHEN 加拿大 THEN ‘北美洲 ’
WHEN 日本 THEN ‘亞洲’
WHEN 墨西哥 THEN ‘北美洲 ’
WHEN 印度 THEN ‘亞洲’
ELSE ‘其他’ END



在CHECK中使用CASE
-------------


在CHECK中使用CASE函式在很多情況下都是非常不錯的解決方法.可能有很多人根本就不用CHECK,那麼我建議你在看過下面的列子之後嘗試一下SQL中使用CHECK.

如下所示:

CONSTRAINT CHECK_SALARY CHECK
WHEN SEX = ‘0’ THEN CASE WHEN SALARY > 1000 THEN 1
ELSE 0 END ELSE 1 END = 1)
“`