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"