LNNVL è una funzione integrata dell'oracolo che restituisce VERO per le condizioni che valutano FALSO o SCONOSCIUTO e restituisce FALSO per le condizioni che valutano VERO. La mia domanda è quale sarebbe il vantaggio di restituire l'opposto della condizione di verità piuttosto che gestire i valori NULL?
Ad esempio, supponiamo di avere una tabella Emp con le colonne StartCommission e CurrentCommission che possono contenere valori null. Quanto segue restituisce solo le righe senza valore nullo:
SELECT * FROM Emp WHERE StartCommission = CurrentCommission;
Se desideri includere righe in cui una delle commissioni è nulla, puoi fare qualcosa del genere:
SELECT * FROM Emp WHERE StartCommission = CurrentCommission
OR StartCommission IS NULL OR CurrentCommission IS NULL;
Sembrerebbe che esistesse una funzione per abbreviare questa sintassi, ma l'uso di LNNVL restituisce tutti i record non uguali e tutti i record con valori nulli.
SELECT * FROM Emp WHERE LNNVL(StartCommission = CurrentCommission);
L'aggiunta di NOT a questo restituisce solo righe senza valori null. Mi sembra che la funzionalità desiderata per questo caso sarebbe quella di mantenere vere le condizioni vere, false le condizioni e fare in modo che le condizioni sconosciute vengano valutate come vere. Ho davvero creato un caso di scarso utilizzo qui? È davvero più probabile voler trasformare l'ignoto in vero, vero in falso e falso in vero?
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);