NVL 表達式 - Amazon Redshift

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

NVL 表達式

NVL 表達式與 COALESCE 表達式相同。NVL 和 COALESCE 為同義詞。

Syntax (語法)

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

NVL 或 COALESCE 表達式傳回清單中第一個非 Null 表達式的值。如果所有表達式都是 Null,則結果為 Null。找到非 Null 值時,就不會評估清單中剩餘的表達式。

如果您想在慣用值遺失或為 Null 時傳回備用值,這種表達式很有用。例如,查詢可能傳回三個電話號碼的其中之一 (依序為行動、住家或公司),視資料表中最先找到何者而定 (不是 Null)。

範例

建立具有 START_DATE 和 END_DATE 欄的資料表、插入幾個具有 Null 值的列,然後將 NVL 表達式套用至這兩欄。

create table datetable (start_date date, end_date date);
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);
select nvl(start_date, end_date) from datetable order by 1; coalesce ------------ 2008-06-01 2008-12-31 2008-12-31

NVL 表達式的預設欄名為 COALESCE。下列查詢會傳回相同的結果:

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

如果您預期查詢的某些函數或欄會傳回 Null 值,您可以使用 NVL 表達式以其他值取代 Null。例如,彙總函數 (例如 SUM) 在沒有可評估的列時會傳回 Null 值,而不是零。您可以使用 NVL 表達式,以 0.0 取代這些 Null 值:

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