Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

CASE 表达式

语法

CASE 表达式是一种条件表达式,类似于其他语言中发现的 if/then/else 语句。CASE 用于指定存在多个条件时的结果。

有两种类型的 CASE 表达式:简单和搜索。

在简单 CASE 表达式中,将一个表达式与一个值比较。在找到匹配项时,将应用 THEN 子句中的指定操作。如果未找到匹配项,则应用 ELSE 子句中的操作。

在搜索 CASE 表达式中,基于布尔表达式计算每个 CASE,而且 CASE 语句会返回第一个匹配的 CASE。如果在 WHEN 子句中未找到任何匹配的 CASE,则返回 ELSE 子句中的操作。

用于匹配条件的简单 CASE 语句:

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

用于计算每个条件的搜索 CASE 语句:

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

参数

expression

一个列名称或任何有效的表达式。

value

与该表达式比较的值,如数字常数或字符串。

result

计算表达式或布尔条件时返回的目标值或表达式。

Boolean condition

值等于该常数时,布尔条件有效或为 true。条件为 true 时,将返回 THEN 子句后的指定结果。如果条件为 false,则返回 ELSE 子句后的结果。如果忽略 ELSE 子句且没有条件匹配,则结果为 null。

示例

使用简单 CASE 表达式在针对 VENUE 表的查询中将 New York City 替换为 Big Apple。将所有其他城市名称替换为 other

Copy
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 值分配组编号:

Copy
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)

本页内容: