SQL-基礎語法 - 條件分支

zydow發表於2024-12-04

條件分支 case when 是 SQL 中用於根據條件進行分支處理的語法。它類似於其他程式語言中的 if else 條件判斷語句,允許我們根據不同的條件選擇不同的結果返回。

使用 case when 可以在查詢結果中根據特定的條件動態生成新的列或對現有的列進行轉換。

舉個例子:假設你是一位餐廳的服務員,客人點了不同的菜品,而你需要根據客人點的菜來確定服務的方式。如果客人點了魚,你會用餐具和服務方式適合吃魚的方式來招待他們;如果客人點了牛排,你會用適合牛排的餐具和服務方式。case when 就像你根據客人點的菜品來選擇不同服務方式的過程。

示例

假設有一個學生表 student,包含以下欄位:name(姓名)、age(年齡)。資料如下:

name age
小明 18
雞哥 25
李華 30
王五 40

使用條件分支 case when ,根據 name 來判斷學生是否會說 RAP,並起別名為 can_rap。

示例 SQL 如下:

SELECT name, CASE WHEN (name = '雞哥') THEN '會' ELSE '不會' END AS can_rap FROM student

查詢結果:

name can_rap
小明 不會
雞哥
李華 不會
王五 不會

case when 支援同時指定多個分支,示例語法如下:

CASE WHEN (條件1) THEN 結果1 WHEN (條件2) THEN 結果2 ... ELSE 其他結果 END


習題

假設有一個學生表 student,包含以下欄位:name(姓名)、age(年齡)。請你編寫一個 SQL 查詢,將學生按照年齡劃分為三個年齡等級(age_level):60 歲以上為 "老同學",20 歲以上(不包括 60 歲以上)為 "年輕",20 歲及以下、以及沒有年齡資訊為 "小同學"。

返回結果應包含學生的姓名(name)和年齡等級(age_level),並按姓名升序排序。

name age
雞哥 25
魚皮 18
熱dog 40
摸FISH
李阿巴 19
老李 56
李變數 24
王加瓦 23
趙派森 80
孫加加 60
點選檢視答案
SELECT
  name,
  CASE
    WHEN (age > 60) THEN '老同學'
    WHEN (age > 20) THEN '年輕'
    ELSE '小同學'
  END AS age_level
FROM
  student
ORDER BY
  name asc

相關文章