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

Auf den ersten Blick scheint es, als ob die beiden SQL-Klauseln IN und EXISTS austauschbar wären. Tatsächlich unterscheiden sie sich aber stark darin, wie sie mit NULL-Werten umgehen, so dass die Ergebnisse durchaus abweichend ausfallen können. Das Problem rührt von der Tatsache her, dass ein NULL-Wert in einer Oracle-Datenbank „unbekannt“ bedeutet – deshalb ist jeder Vergleich oder jede Operation mit einem NULL-Wert ebenfalls NULL, und jeder Test, der NULL zurückgibt, wird ignoriert. So gibt keine der beiden folgenden Abfragen irgendwelche Datensätze zurück:

Der Wert 1 ist weder gleich noch ungleich NULL. Nur IS NULL würde „true“ bei einem NULL-Wert liefern und einen Datensatz zurückgeben:

Wenn man IN verwendet, fordert man SQL auf, einen Wert zu nehmen und diesen mit allen anderen Werten beziehungsweise Sätzen von Werten in einer Liste mit „=“ zu vergleichen. Falls sich irgendwelche NULL-Werte darunter finden, wird der Datensatz nicht zurückgegeben, selbst wenn beide Werte NULL sind:

Ein IN ist funktional äquivalent zur = ANY-Klausel:

Wenn man eine äquivalente Form von EXISTS verwendet, zählt SQL die Reihen und ignoriert die Werte in der Unterabfrage – selbst wenn NULL zurückgegeben wird:

IN und EXISTS sind logisch identisch. Die IN-Klausel vergleicht Werte, die von der Unterabfrage zurückgegeben wurden, und filtert in der äußeren Abfrage die entsprechenden Zeilen heraus. Die EXISTS-Klausel vergleicht Werte und filtert Zeilen innerhalb der Unterabfrage heraus. Im Falle von NULL-Werten ist die daraus resultierende Menge von Zeilen identisch.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Trojaner-Angriffe verdreifacht

Kaspersky meldet starke Zunahme mobiler Banking-Trojaner. Insgesamt 33,3 Millionen Angriffe auf mobile Nutzer im Jahr…

16 Stunden ago

Höherer Durchsatz in Glasfasernetzen

Optische Schalter mit Flüssigkristallspiegeln sollen die Datenpakete so stark verkleinern, dass mehr Daten durchs Netz…

16 Stunden ago

Internet-Kriminalität: 6 von 10 Nutzern betroffen

Jahresbilanz: Laut Bitkom wurden 61 Prozent Opfer von Cybercrime. Durchschnittlich läge der Schaden bei 219…

18 Stunden ago

Daten von mehr als 2 Millionen Bankkarten im Darknet geleakt

Sie stammen meist von mit Infostealern kompromittierten Systemen. Die Zahl der derzeit betroffenen Geräte schätzt…

20 Stunden ago

KI-Phone mit App-freiem Assistenten

In der MeinMagenta-App ist die Antwort-Maschine von Perplexity verfügbar.

1 Tag ago

ChatGPT-4.5: OpenAI verspricht mehr „emotionale Intelligenz“

Das neue Modell bietet auch eine bessere Erkennung von Mustern und Zusammenhängen. Bei ChatGPT-4.5 setzt…

2 Tagen ago