Oracle-Tipp: Auswirkung von NULL-Werten auf IN und EXISTS

Es treten jedoch Probleme auf, wenn man die Logik umkehrt und NOT IN und NOT EXISTS verwendet, was unterschiedliche Ergebnismengen zurückgibt. Die erste Abfrage gibt keine Zeilen zurück, die zweite die gewünschten Daten. Diese Abfragen sind nicht identisch!


Die NOT IN-Klausel ist im Prinzip äquivalent zum Vergleichen jedes Wertes mithilfe von „=“, was fehlschlägt, wenn ein Test FALSE oder NULL ist. Ein Beispiel:


All diese Abfragen geben keine Zeilen zurück. Bei der zweiten ist dies am deutlichsten, denn 1 != NULL ergibt NULL, so dass die gesamte WHERE-Bedingung für diese Zeile falsch ist. Die folgenden Abfragen hingegen würden funktionieren:


Die obige NOT IN-Abfrage lässt sich durchaus verwenden, solange man sicherstellt, dass nicht NULL in den Ergebnissen zurückgegeben wird. Die folgenden beiden Abfragen funktionieren ebenfalls, allerdings unter der Voraussetzung, dass empno nicht NULL ist, was in diesem Fall wohl zutreffen dürfte:


Wer die Unterschiede zwischen IN, EXISTS, NOT IN und NOT EXISTS verstanden hat, kann viele Stolperfallen vermeiden, die sich beim Auftreten von NULL-Werten in den Daten einer Unterabfrage ergeben.

Themenseiten: Big Data, Datenbank, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Oracle-Tipp: Auswirkung von NULL-Werten auf IN und EXISTS

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *