CASE
語法在 SQL 中是類似其它程式語言 if
的寫法,可以根據不同的條件,輸出對應的結果。這在查詢和轉換資料時非常有用,可以根據條件靈活地改變輸出的內容。我自己常用來依條件輸出特定文字到欄位內。
使用方式
這個語法需要搭配 WHEN
, THEN
和 ELSE
等關鍵字使用,至少要有一個 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 |