本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CASE 條件式表達式
CASE 表達式是條件式表達式,類似於以其他語言找到的 if/then/else 陳述式。CASE 用於在有多個條件時指定結果。在SQL運算式有效CASE時使用,例如在 SELECT 命令中。
CASE 表達式有兩種類型:簡單和已搜尋。
在簡單CASE表達式中,將表達式與值進行比較。找到相符項目時,會套用THEN子句中的指定動作。如果找不到相符項目,則會套用ELSE子句中的動作。
在搜尋的CASE表達式中,每個表達式CASE都會根據布林值表達式進行評估,且陳述CASE式會傳回第一個相符的 CASE。如果在WHEN子句中找不到相符項目,則會傳回ELSE子句中的動作。
語法
用於比對條件的簡單CASE陳述式:
CASE expression WHEN value THEN result [WHEN...] [ELSE result] END
用於評估每個條件的搜尋CASE陳述式:
CASE WHEN condition THEN result [WHEN ...] [ELSE result] END
引數
- 運算式
-
欄名或任何有效表達式。
- 值
-
與表達式相比較的值,例如數值常數或字元字串。
- result
-
評估表達式或布林值條件時傳回的目標值或表達式。所有結果運算式的資料類型必須轉換為單個輸出類型。
- condition
-
評估 true 或 false 的布林值運算式。如果條件為 true,則CASE表達式的值是遵循條件的結果,而且不會處理CASE表達式的其餘部分。如果條件為 false,則會評估任何後續WHEN子句。如果沒有WHEN條件結果為 true,則CASE表達式的值是ELSE子句的結果。如果省略ELSE子句,且沒有條件為 true,則結果為 null。
範例
下列範例使用範例TICKIT資料的VENUE資料表和SALES資料表。如需詳細資訊,請參閱範本資料庫。
使用簡單的CASE表達式,在針對VENUE資料表的查詢Big Apple
中New York City
取代 。以 other
取代其他所有城市名稱。
select venuecity, case venuecity when 'New York City' then 'Big Apple' else 'other' end from venue order by venueid desc;
venuecity | case -----------------+----------- Los Angeles | other New York City | Big Apple San Francisco | other Baltimore | other ...
使用搜尋的CASE表達式,根據個別票證銷售PRICEPAID的值指派群組號碼:
select pricepaid, case when pricepaid <10000 then 'group 1' when pricepaid >10000 then 'group 2' else 'group 3' end from sales order by 1 desc;
pricepaid | case ----------+--------- 12624 | group 2 10000 | group 3 10000 | group 3 9996 | group 1 9988 | group 1 ...