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表達式的其餘部分。如果條件為 false,則會評估任何後續WHEN子句。如果沒有WHEN條件結果為 true,則CASE表達式的值是ELSE子句的結果。如果省略ELSE子句,且沒有條件為 true,則結果為 null。

範例

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

使用簡單的CASE表達式,在針對VENUE資料表的查詢Big AppleNew 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 ...