CASE 運算式 - Amazon Redshift

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

CASE 運算式

語法

CASE 表達式是條件式表達式,類似於其他語言中的 if/then/else 陳述式。有多個條件時會使用 CASE 來指定結果。

CASE 表達式有兩種類型:簡單和搜尋。

在簡單 CASE 表達式中,表達式與值相比較。發現相符時,就套用 THEN 子句中指定的動作。未發現相符時,就套用 ELSE 子句中的動作。

在搜尋 CASE 表達式中,每一個 CASE 的評估根據為布林值表達式,而 CASE 陳述式會傳回第一個相符的 CASE。如果在 WHEN 子句之間找不到相符的 CASE,就傳回 ELSE 子句中的動作。

用來比對條件的簡單 CASE 陳述式:

CASE expression WHEN value THEN result [WHEN...] [ELSE result] END

用來評估每一個條件的搜尋 CASE 陳述式:

CASE WHEN boolean condition THEN result [WHEN ...] [ELSE result] END

引數

運算式

欄名或任何有效表達式。

與表達式相比較的值,例如數值常數或字元字串。

result

評估表達式或布林值條件時傳回的目標值或表達式。

Boolean condition

值等於常數時,布林值條件就有效或為 true。True 時會傳回 THEN 子句後面指定的結果。如果條件為 false,則傳回 ELSE 子句後面的結果。如果省略 ELSE 子句且條件都不符合,則結果為 Null。

範例

在針對 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 ... (202 rows)

使用搜尋 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.00 | group 2 10000.00 | group 3 10000.00 | group 3 9996.00 | group 1 9988.00 | group 1 ... (172456 rows)