Função NULLIF - Amazon Redshift

Função NULLIF

Sintaxe

A expressão NULLIF compara dois argumentos e retorna nulo se os argumentos forem iguais. Se eles não forem iguais, o primeiro argumento é retornado. Essa expressão é o inverso da expressão NVL ou COALESCE.

NULLIF ( expression1, expression2 )

Argumentos

expression1, expression2

As colunas ou expressões de destino que são comparadas. O tipo de retorno é igual ao tipo da primeira expressão. O nome padrão da coluna do resultado de NULLIF é o nome da coluna da primeira expressão.

Exemplos

No exemplo a seguir, a consulta retorna a string first porque os argumentos não são iguais.

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

No exemplo a seguir, a consulta retorna NULL porque os argumentos literais da string são iguais.

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

No exemplo a seguir, a consulta retorna 1 porque os argumentos inteiros não são iguais.

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

No exemplo a seguir, a consulta retorna NULL porque os argumentos inteiros são iguais.

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

No exemplo a seguir, a consulta retorna nulo quando há correspondência dos valores LISTID e SALESID:

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)

Você pode usar NULLIF para garantir que strings vazias sempre sejam retornadas como nulas. No exemplo abaixo, o expressão NULLIF retorna um valor nulo ou uma string que contém pelo menos um caractere.

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

NULLIF ignora espaços em branco à direita. Se uma string não estiver vazia, mas contiver espaços em branco, NULLIF continuará retornando nulo:

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)