条件函数 - Amazon Simple Storage Service

条件函数

重要

不再向新客户提供 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 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 表达式以在查询中将 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