No banco de dados Oracle, o
NULLIF()
função compara duas expressões e retorna null
se ambas as expressões forem iguais. Se eles não forem iguais, a função retornará a primeira expressão. Sintaxe
A sintaxe fica assim:
NULLIF(expr1, expr2)
Exemplo
Segue um exemplo para demonstrar:
SELECT NULLIF(5, 7)
FROM DUAL;
Resultado:
5
Nesse caso, os argumentos não eram iguais e, portanto, a função retornou o primeiro argumento.
Veja o que acontece quando ambos os argumentos são iguais:
SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL;
Resultado:
null
Podemos ver que
NULLIF()
retorna null
quando ambos os argumentos são iguais Em relação à primeira linha
SET NULL 'null';
, adicionei isso para que minha sessão SQLcl retorne null
sempre que o resultado for nulo. Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que
null
ocorre como resultado de um SQL SELECT
demonstração. No entanto, você pode usar
SET NULL
para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null
deve ser devolvido. Comparado com CASE
O
NULLIF()
função é o equivalente ao seguinte CASE
expressão:CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
Contagem de argumentos inválida
Chamar a função sem passar nenhum argumento resulta em um erro:
SELECT NULLIF()
FROM DUAL;
Resultado:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
E passar muitos argumentos também causa um erro:
SELECT NULLIF(1, 2, 3)
FROM DUAL;
Resultado:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"