sql >> Base de Datos >  >> RDS >> Oracle

Función NULLIF() en Oracle

En Oracle Database, NULLIF() La función compara dos expresiones y devuelve null si ambas expresiones son iguales. Si no son iguales, la función devuelve la primera expresión.

Sintaxis

La sintaxis es así:

NULLIF(expr1, expr2)

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT NULLIF(5, 7)
FROM DUAL;

Resultado:

5

En este caso, los argumentos no eran iguales, por lo que la función devolvió el primer argumento.

Esto es lo que sucede cuando ambos argumentos son iguales:

SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL;

Resultado:

null

Podemos ver que NULLIF() devuelve null cuando ambos argumentos son iguales

Con respecto a la primera línea SET NULL 'null'; , lo agregué para que mi sesión SQLcl devuelva null siempre que el resultado sea nulo.

De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null ocurre como resultado de un SQL SELECT declaración.

Sin embargo, puede usar SET NULL para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null debe ser devuelto.

Comparado con CASE

El NULLIF() la función es el equivalente del siguiente CASE expresión:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

Recuento de argumentos no válidos

Llamar a la función sin pasar ningún argumento da como resultado un error:

SELECT NULLIF()
FROM DUAL;

Resultado:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"

Y pasar demasiados argumentos también provoca un error:

SELECT NULLIF(1, 2, 3)
FROM DUAL;

Resultado:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"