条件函数
重要
不再向新客户提供 Amazon S3 Select。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
表达式以在查询中将 New York City
替换为 Big Apple
。将所有其他城市名称替换为 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
按顺序评估参数并返回第一个非未知值,即第一个非空或非缺失值。此函数无法传播空值和缺失值。
语法
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