LNNVL es una función integrada de oráculo que devuelve VERDADERO para las condiciones que evalúan como FALSO o DESCONOCIDO, y devuelve FALSO para las condiciones que evalúan como VERDADERO. Mi pregunta es ¿cuál sería el beneficio de devolver lo contrario de la condición de verdad en lugar de solo manejar los valores NULL?
Por ejemplo, suponga que tiene una tabla Emp con columnas StartCommission y CurrentCommission que pueden contener valores nulos. Lo siguiente devuelve solo filas sin valor nulo:
SELECT * FROM Emp WHERE StartCommission = CurrentCommission;
Si desea incluir filas donde cualquiera de las comisiones es nula, puede hacer algo como esto:
SELECT * FROM Emp WHERE StartCommission = CurrentCommission
OR StartCommission IS NULL OR CurrentCommission IS NULL;
Parecería que existiría una función para acortar esta sintaxis, pero el uso de LNNVL devuelve todos los registros no iguales y todos los registros con valores nulos.
SELECT * FROM Emp WHERE LNNVL(StartCommission = CurrentCommission);
Agregar NOT a esto solo devuelve filas sin nulos. Me parece que la funcionalidad deseada para este caso sería mantener las condiciones verdaderas verdaderas, las condiciones falsas falsas y que las condiciones desconocidas se evalúen como verdaderas. ¿Realmente he creado un caso de bajo uso aquí? ¿Es realmente más probable que desee convertir lo desconocido en verdadero, verdadero en falso y falso en verdadero?
create table emp (StartCommission Number(3,2), CurrentCommission Number(3,2));
insert into emp values (null,null);
insert into emp values (null,.1);
insert into emp values (.2,null);
insert into emp values (.3,.4);