本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
條件函數
重要
新客戶不再提供 Amazon S3 精選服務。Amazon S3 Select 的現有客戶可以照常繼續使用此功能。進一步了解
Amazon S3 Select 支援下列條件函數。
CASE
CASE
運算式是條件式運算式,類似於其他語言中的 if/then/else
陳述式。有多個條件時會使用 CASE
來指定結果。CASE
表達式有兩種類型:簡單和搜尋。
在簡單 CASE
運算式中,表達式與值相比較。發現相符時,就套用 THEN
子句中指定的動作。未發現相符時,就套用 ELSE
子句中的動作。
在搜尋 CASE
運算式中,每一個 CASE
的評估根據為布林值運算式,而 CASE
陳述式會傳回第一個相符的 CASE
。如果在 WHEN
子句之間找不到相符的 CASE
,就傳回 ELSE
子句中的動作。
語法
注意
目前,Amazon S3 Select 不支援 ORDER BY
或包含新行的查詢。請務必使用沒有分行符號的查詢。
以下是用來比對條件的簡單 CASE
陳述式:
CASE
expression
WHENvalue
THENresult
[WHEN...] [ELSEresult
] END
以下是用來評估每一個條件的搜尋 CASE
陳述式:
CASE WHEN
boolean condition
THENresult
[WHEN ...] [ELSEresult
] END
範例
注意
如果您使用 Amazon S3 主控台執行下列範例,且CSV檔案包含標題列,請選擇排除第一行CSV資料。
範例 1:使用簡單的 CASE
運算式在查詢中以 Big Apple
替換 New York City
。以 other
取代其他所有城市名稱。
SELECT venuecity, CASE venuecity WHEN 'New York City' THEN 'Big Apple' ELSE 'other' END FROM S3Object;
查詢結果:
venuecity | case -----------------+----------- Los Angeles | other New York City | Big Apple San Francisco | other Baltimore | other ...
範例 2:使用搜尋 CASE
運算式以根據個別門票銷售的 pricepaid
值來指派群組號碼:
SELECT pricepaid, CASE WHEN CAST(pricepaid as FLOAT) < 10000 THEN 'group 1' WHEN CAST(pricepaid as FLOAT) > 10000 THEN 'group 2' ELSE 'group 3' END FROM S3Object;
查詢結果:
pricepaid | case -----------+--------- 12624.00 | group 2 10000.00 | group 3 10000.00 | group 3 9996.00 | group 1 9988.00 | group 1 ...
COALESCE
COALESCE
依順序評估引數,並傳回第一個非不明值,也就是第一個非空值或非遺失值。此函數不會傳播 null 值和遺失值。
語法
COALESCE (
expression
,expression
, ... )
參數
-
expression
-
該函數對其運作的目標運算式。
範例
COALESCE(1) -- 1 COALESCE(null) -- null COALESCE(null, null) -- null COALESCE(missing) -- null COALESCE(missing, missing) -- null COALESCE(1, null) -- 1 COALESCE(null, null, 1) -- 1 COALESCE(null, 'string') -- 'string' COALESCE(missing, 1) -- 1
NULLIF
由於有兩個運算式,如果兩個運算式評估為相同的值,則 NULLIF
會傳回 NULL
值,否則 NULLIF
會傳回第一個運算式評估的結果。
語法
NULLIF (
expression1
,expression2
)
參數
-
expression1
,expression2
-
該函數對其運作的目標運算式。
範例
NULLIF(1, 1) -- null NULLIF(1, 2) -- 1 NULLIF(1.0, 1) -- null NULLIF(1, '1') -- 1 NULLIF([1], [1]) -- null NULLIF(1, NULL) -- 1 NULLIF(NULL, 1) -- null NULLIF(null, null) -- null NULLIF(missing, null) -- null NULLIF(missing, missing) -- null