Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

NVL 表达式

NVL 表达式与 COALESCE 表达式相同。NVL 和 COALESCE 是同义词。

语法

Copy
NVL | COALESCE ( expression, expression, ... )

NVL 或 COALESCE 表达式返回不为 null 的列表中的第一个表达式的值。如果所有表达式为 null,则结果为 null。当找到非 null 值时,将不计算该列表中的剩余表达式。

如果您要在首选值缺失或为 null 时返回某些项的备份值,则此类表达式非常有用。例如,查询可能返回三个电话号码(手机、住宅或工作,按该顺序)之一,无论首先在表(非 null)中找到哪一个号码。

示例

创建一个包含 START_DATE 和 END_DATE 列的表,插入几个包含 null 值的行,然后将 NVL 表达式应用于这两个列。

Copy
create table datetable (start_date date, end_date date);
Copy
insert into datetable values ('2008-06-01','2008-12-31'); insert into datetable values (null,'2008-12-31'); insert into datetable values ('2008-12-31',null);
Copy
select nvl(start_date, end_date) from datetable order by 1; coalesce ------------ 2008-06-01 2008-12-31 2008-12-31

NVL 表达式的默认列名称为 COALESCE。以下查询将返回相同的结果:

Copy
select coalesce(start_date, end_date) from datetable order by 1;

如果您希望查询为特定函数或列返回 null 值,则可使用 NVL 表达式将这些 null 值替换为其他一些值。例如,聚合函数(如 SUM)在没有要计算的行时会返回 null 值而不是零。您可以使用 NVL 表达式将这些 null 值替换为 0.0

Copy
select nvl(sum(sales), 0.0) as sumresult, ...

本页内容: