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

Umfrage: Angestellte in Deutschland unterschätzen NIS-2-Richtlinie

Fast zwei Drittel halten jedoch eine Umsetzung aller Vorgaben von NIS 2 bis Jahresende für…

5 Stunden ago

Kostenloser Dekryptor für ShrinkLocker

Mit dem Dekryptor von Bitdefender können Opfer von Attacken mit der Shrinklocker-Ransomware Dateien wiederherstellen.

19 Stunden ago

Malwarebytes warnt vor Betrugsmaschen beim Weihnachtseinkauf

In der Vorweihnachtszeit ist vor allem Malvertising auf dem Vormarsch. Cyberkriminelle locken Nutzer über schädliche…

19 Stunden ago

Bedrohungsindex: Deutliche Zunahme von Infostealern im Oktober

Dazu trägt unter der Infostealer Lumma-Stealer bei. Hierzulande dominiert der Infostealer Formbook die Malware-Landschaft.

2 Tagen ago

Chrome 131 schließt zwölf Sicherheitslücken

Eine schwerwiegende Anfälligkeit hebelt die Sicherheitsfunktion Seitenisolierung auf. Betroffen sind Chrome für Windows, macOS und…

2 Tagen ago

DeepL Voice mit KI für Sprach- übersetzungen

DeepL Voice ermöglicht Live‑Übersetzung von Meetings und Gesprächen in 13 Sprachen.

2 Tagen ago