CASE WHEN THEN END多條件判斷
阿新 • • 發佈:2018-12-20
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)
“`