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

Función Oracle NULLIF()

Este tutorial de SQL proporciona explicaciones, ejemplos de la función NULLIF en Oracle

La función NULLIF es una función muy útil. Compara dos valores y devuelve nulo si los valores son iguales, de lo contrario devuelve el primer valor

expr1 :son los valores de origen o la expresión que se van a comparar con expr2
expr2 :También es el valor de origen que se compara con expr1

No puede especificar el NULL literal para el primer valor

SQL> select nullif(NULL,1) from dual;
select nullif(NULL,1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected - got CHAR

Uso y ejemplo

SQL> select nullif(1,1) from dual;
NULLIF(1,1)
----------- SQL> select nullif(1,2) from dual; NULLIF(1,2)
-----------
1

Nota importante

1) Esta declaración es muy similar a la declaración case y es equivalente a
CASE WHEN expr1=expr2 THEN NULL ELSE expr1 END

2) Si ambos argumentos son tipos de datos numéricos, Oracle Database determina el argumento con la precedencia numérica más alta, convierte implícitamente el otro argumento a ese tipo de datos y devuelve ese tipo de datos. Si los argumentos no son numéricos, deben ser del mismo tipo de datos de Oracle, o Oracle devuelve un error.

SQL> select nullif(1,'apple') from dual;
select nullif(1,'apple') from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got CHAR

SQL> select nullif('apple',1) from dual;
select nullif('apple',1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER

Más ejemplos

select first_name, length(first_name),last_name,
length(last_name), nullif(length(first_name),length(last_name))
 from emp;

SELECT NULLIF('Sunday', 'Friday') AS check FROM dual;

Otro caso de uso de la función NULLIF será si desea enumerar los empleados que han cambiado de trabajo desde que fueron contratados, como lo indica un job_id en la tabla job_history diferente del job_id actual en la tabla de empleados

select emp_name,nullif(b.job_id,a.job_id) old_job from employees a,   job_history  b where a.emp_id=b.emp_id;

Preguntas frecuentes sobre la función Nullif

Cómo evitar el error de división por cero con la ayuda de la función NULLIF

Obtenemos el error de dividir por cero si el denominador en la división es cero. Podemos evitar usando la función NULLIF como se muestra a continuación
seleccione 100/ nullif(0,0) de dual;
Ahora aquí, dado que ambos valores son iguales, Nullif devolverá nulo y la expresión completa devolverá nulo en su lugar de cualquier error. Así es como puede usar cuando se trata de una columna real
select col2/ nullif(col1,0) from exp;

Artículos relacionados

Declaración de actualización en Oracle
Función NVL2 en Oracle
Función NVL en Oracle
Función de unión en Oracle
Funciones de fila única en sql
Declaración de eliminación de tabla en Oracle

Recurso externo
Referencia de Oracle para NULLIF