SQL 的 CASE 條件敘述

April 27, 2024

CASE 語法在 SQL 中是類似其它程式語言 if 的寫法,可以根據不同的條件,輸出對應的結果。這在查詢和轉換資料時非常有用,可以根據條件靈活地改變輸出的內容。我自己常用來依條件輸出特定文字到欄位內。

使用方式

這個語法需要搭配 WHEN, THENELSE 等關鍵字使用,至少要有一個 WHEN ... THEN ... 語法,ELSE 可以省略。

其格式如下:

CASE
    WHEN 條件成立 THEN 結果
    [其它的 WHEN ...]
    [ELSE 結果]
END;

範例資料

以下是使用 CASE 語法的一個範例。我們建立一個 Person 表格,包含姓名(Name)、性別(Sex)和城市(City)。我們想根據性別欄位的值,輸出對應的縮寫:

CREATE TABLE Person (
    [Name] VARCHAR(50),
    Sex VARCHAR(10),
    City VARCHAR(50)
);

先建立範例資料:

INSERT INTO Person ([Name], Sex, City) VALUES
('John', 'Male', 'New York'),
('Alice', 'Female', 'Los Angeles'),
('Bob', 'Male', 'Chicago'),
('Emily', 'Female', 'Houston');

我們可以使用 CASE 語法來根據性別欄位的值,輸出對應的縮寫:

SELECT [Name], CASE 
    WHEN Sex = 'Female' THEN 'F'
    WHEN Sex = 'Male' THEN 'M'
    ELSE 'Unknown'
END
AS Sex
FROM Person

上述語法在查詢的同時,將 Female 轉換為 F,Male 轉換為 M,如果是其它值,則輸出 Unknown,為性別欄位做簡易的分類。輸出結果為:

Name Sex
John M
Alice F
Bob M
Emily F

參考資料