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"