CASE條件運算式 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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 CityVENUE資料表的查詢。Big Appleother 取代其他所有城市名稱。

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 ...