MySQL中的CASE WHEN語句:用法、示例與解析

在 MySQL 中,`CASE WHEN` 語句是一種強大的表達式,它允許開發者根據不同的條件來返回不同的值。以下是對 `CASE WHEN` 語句的詳盡解釋及使用範例。

什麼是 CASE WHEN 語句?

`CASE WHEN` 語句是一種選擇結構,它在查詢過程中可以根據給定的條件執行不同分支的邏輯操作。它類似於其他編程語言中的 switch 或 if-elseif-else 語句。

CASE WHEN 的基本語法

CASE
WHEN condition1 THEN result1
[WHEN condition2 THEN result2] ...
ELSE else_result
END

在這個基本的語法中,`conditionN` 是用來判斷是否滿足條件的表達式,而 `resultN` 是當條件匹配時需要返回的結果。如果所有的條件都不滿足,則返回 `ELSE` 子句中的結果(可選)。

CASE WHEN 的使用實例

1. 簡單的案例

假設我們有一個名爲 “Persons” 的表,包含字段 “ID”, “Name” 和 “Age”。我們可以用 `CASE WHEN` 來顯示年齡大於等於某個特定值的姓名:

SELECT Name, Age,
CASE
WHEN Age >= 30 THEN 'Adult'
ELSE 'Not Adult'
END AS AgeCategory
FROM Persons;

這個查詢會爲每個記錄返回一個額外的列 “AgeCategory”,其中包含基於年齡的分類。

2. 多條件判斷

如果我們想要更復雜的條件,比如年齡介於某個範圍內或者性別爲男性的成年人,可以使用多個 `WHEN` 子句:

SELECT Name, Age, Gender,
CASE
WHEN (Age BETWEEN 25 AND 40) AND Gender = 'Male' THEN 'Young Male'
WHEN Age <= 18 THEN 'Minor'
ELSE 'Other'
END AS SpecialGroup
FROM Persons;

這個查詢將根據年齡範圍和性別對每個人進行分類。

3. 在計算表達式中使用 CASE

`CASE` 可以在表達式的任何地方使用,不僅僅是 SELECT 列表中。例如,在 HAVING 子句中:

SELECT Count(*) AS TotalCustomers
FROM Customers
GROUP BY YearOpened
HAVING CASE
WHEN YEAR(Now()) - YearOpened > 5 THEN True
ELSE False
END;

這將會只列出那些在過去五年內成立的客戶總數。

`CASE WHEN` 語句是非常有用的工具,可以簡化複雜的查詢邏輯。它不僅可以幫助提高代碼的可讀性,還能減少冗長的嵌套 `IF` 語句。通過結合使用 `WHEN` 子句的條件判斷,你可以構建出非常靈活且可維護的數據處理流程。

为您推荐