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)