Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função NULLIF() no Oracle


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"