LNNVL ist eine in Oracle integrierte Funktion , die TRUE für Bedingungen zurückgibt, die zu FALSE oder UNKNOWN ausgewertet werden, und FALSE für Bedingungen, die zu TRUE ausgewertet werden. Meine Frage ist, was der Vorteil wäre, das Gegenteil der Wahrheitsbedingung zurückzugeben, anstatt nur mit den NULL-Werten umzugehen.
Angenommen, Sie haben eine Emp-Tabelle mit den Spalten StartCommission und CurrentCommission, die Nullen enthalten können. Folgendes gibt nur Zeilen mit keinem Wert null zurück:
SELECT * FROM Emp WHERE StartCommission = CurrentCommission;
Wenn Sie Zeilen einschließen möchten, in denen eine der beiden Provisionen null ist, können Sie Folgendes tun:
SELECT * FROM Emp WHERE StartCommission = CurrentCommission
OR StartCommission IS NULL OR CurrentCommission IS NULL;
Es scheint, als ob eine Funktion existieren würde, um diese Syntax zu verkürzen. Wenn Sie jedoch LNNVL verwenden, werden alle ungleichen Datensätze und alle Datensätze mit Nullen zurückgegeben.
SELECT * FROM Emp WHERE LNNVL(StartCommission = CurrentCommission);
Wenn Sie NOT hinzufügen, werden nur Zeilen ohne Nullen zurückgegeben. Es scheint mir, dass die gewünschte Funktionalität für diesen Fall darin besteht, die wahren Bedingungen wahr und die falschen Bedingungen falsch zu halten und unbekannte Bedingungen als wahr zu bewerten. Habe ich hier wirklich einen Low Use Case erstellt? Ist es wirklich wahrscheinlicher, Unbekanntes in Wahres, Wahres in Falsches und Falsches in Wahres verwandeln zu wollen?
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);