NULLIF 函數 - Amazon Redshift

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

NULLIF 函數

語法

NULLIF 運算式會比較兩個引數,如果引數相等,則傳回 null。如果不相等,則傳回第一個引數。此表達式是 NVL或 COALESCE表達式的反轉。

NULLIF ( expression1, expression2 )

引數

expression1、expression2

比較的目標欄或表達式。傳回類型與第一個表達式的類型相同。NULLIF 結果的預設資料欄名稱是第一個表達式的資料欄名稱。

範例

在下列範例中,查詢會傳回字串 first,因為引數不相等。

SELECT NULLIF('first', 'second'); case ------- first

在下列範例中,查詢會傳回 NULL,因為字串常值引數相等。

SELECT NULLIF('first', 'first'); case ------- NULL

在下列範例中,查詢會傳回 1,因為整數引數不相等。

SELECT NULLIF(1, 2); case ------- 1

在下列範例中,查詢會傳回 NULL,因為整數引數相等。

SELECT NULLIF(1, 1); case ------- NULL

在下列範例中,當 LISTID和 SALESID值相符時,查詢會傳回 null:

select nullif(listid,salesid), salesid from sales where salesid<10 order by 1, 2 desc; listid | salesid --------+--------- 4 | 2 5 | 4 5 | 3 6 | 5 10 | 9 10 | 8 10 | 7 10 | 6 | 1 (9 rows)

您可以使用 NULLIF 來確保空字串一律傳回為 null。在下面的範例中,NULLIF表達式會傳回 null 值或包含至少一個字元的字串。

insert into category values(0,'','Special','Special'); select nullif(catgroup,'') from category where catdesc='Special'; catgroup ---------- null (1 row)

NULLIF 會忽略尾隨空白。如果字串不是空的,但包含空白, NULLIF 仍會傳回 null:

create table nulliftest(c1 char(2), c2 char(2)); insert into nulliftest values ('a','a '); insert into nulliftest values ('b','b'); select nullif(c1,c2) from nulliftest; c1 ------ null null (2 rows)