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)