條件函數 - Amazon Simple Storage Service

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

條件函數

重要

新客戶不再提供 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 WHEN value THEN result [WHEN...] [ELSE result] END

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

CASE WHEN boolean condition THEN result [WHEN ...] [ELSE result] 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