本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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運算式的其餘部分。如果條件為假,則評估任何後續WHEN子句。如果沒有WHEN條件結果為 true,CASE表示式的值就是ELSE子句的結果。如果省略ELSE子句且沒有條件為真,則結果為 null。
範例
下列範例使用範例資料中的TICKIT資料VENUESALES表和表格。如需詳細資訊,請參閱範本資料庫。
使用簡單CASE運算式來取代New York City
VENUE資料表的查詢。Big Apple
以 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 ...