首頁 >資料庫 >SQL >SQL中Case When的用法

SQL中Case When的用法

angryTom
angryTom原創
2020-02-18 13:12:08182688瀏覽

在SQL中,「Case  When」語句用於選擇判斷,在執行時先對條件進行判斷,然後根據判斷結果做出相應的操作;語法「CASE 字段WHEN 條件1 THEN 操作1 WHEN條件2 THEN 操作2...ELSE 操作n END;」。

SQL中Case When的用法

本教學操作環境:windows7系統、Microsoft SQL Server 2016版、Dell G3電腦。

SQL中case when的用法

case when類似程式語言中的if else判斷、switch case語句。該語句執行時先對條件進行判斷,然後根據判斷結果做出對應的操作。

Case有兩種格式:簡單Case函數和Case搜尋函數。

簡單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函數在滿足了某個符合條件後,剩下的條件將會被自動忽略,因此,即使滿足多個條件,執行過程中也只認第一個條件。

(PHP中文網,有大量免費的SQL教學,歡迎大家學習!)

在使用CASE WHEN時,可以把它當作一個邏輯上的匿名字段,字段值根據條件確認,在需要使用字段名時可以是用as來定義別名。這麼說還很抽象,看看下面 CASE WHEN的使用案例就清楚了。

使用場景

1、可以將已知資料依照某種方式分組,分析。

SQL中Case When的用法

根據這個國家人口數據,統計亞洲和北美洲的人口數。使用如下SQL:

SELECT  CASE country
WHEN '中国'     THEN '亚洲'
WHEN '印度'     THEN '亚洲'
WHEN '日本'     THEN '亚洲'
WHEN '美国'     THEN '北美洲'
WHEN '加拿大'  THEN '北美洲'
WHEN '墨西哥'  THEN '北美洲'
ELSE '其他' END as '洲' , SUM(population) as '人口'
FROM test
GROUP BY CASE country
WHEN '中国'     THEN '亚洲'
WHEN '印度'     THEN '亚洲'
WHEN '日本'     THEN '亚洲'
WHEN '美国'     THEN '北美洲'
WHEN '加拿大'  THEN '北美洲'
WHEN '墨西哥'  THEN '北美洲'
ELSE '其他' END;

SQL中Case When的用法

這裡的兩個CASE WHEN都相當於一個字段,不過值得一提的是,第二個CASE WHEN 的THEN值不用寫明是什麼洲,它只是用來將記錄分組,所以THEN後面的值只有能區分這三種記錄就行,GROUP BY也可以寫成:

GROUP BY CASE country
WHEN '中国'     THEN 0
WHEN '印度'     THEN 0
WHEN '日本'     THEN 0
WHEN '美国'     THEN 1
WHEN '加拿大'  THEN 1
WHEN '墨西哥'  THEN 1
ELSE 2 END;

2、用一個SQL語句完成不同條件的分組。

有以下資料:

SQL中Case When的用法

用Case函數來完成依照國家和性別進行分組。使用如下SQL:

SELECT country,
SUM( CASE WHEN sex = '1' THEN population ELSE 0 END  ),  --男性人口
SUM( CASE WHEN sex = '2' THEN population ELSE 0 END )   --女性人口
FROM  Table_A
GROUP BY country;

得到如下結果:

SQL中Case When的用法

#就第一個CASE WHEN講解:

CASE WHEN sex = '1' THEN
population ELSE 0 END

當記錄的sex為1時,這個字段的值為記錄的population值,否則為0,因此能計算出一個國家的男性人口。

更多SQL等程式設計入門教學課程,請持續關注PHP中文網! !        

#

以上是SQL中Case When的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn