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 的布林值運算式。如果 condition 為真,CASE 運算式的值是遵循條件的結果,而 CASE 運算式的其餘部分則不會處理。如果 condition 為假,則評估任何後續 WHEN 子句。如果沒有 WHEN 條件結果為真,CASE 運算式的值是 ELSE 子句的結果。如果省略 ELSE 子句且沒有條件為 true,則結果為 Null。

範例

下列範例會使用範例 TICKIT 資料中的 VENUE 表格和 SALES 表格。如需詳細資訊,請參閱 範本資料庫

在針對 VENUE 資料表的查詢中,使用簡單 CASE 表達式以 New York City 取代 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 ...