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

Google schließt Zero-Day-Lücke in Chrome

Von ihr geht ein hohes Risiko aus. Angreifbar sind Chrome für Windows, macOS und Linux.

2 Tagen ago

KI erkennt Emotionen in echten Sportsituationen

Forschende des KIT haben ein Modell zur Emotionsanalyse entwickelt, das affektive Zustände ähnlich genau wie…

3 Tagen ago

Ermittlern gelingt weiterer Schlag gegen Ransomware-Gruppe LockBit

Sie decken die Identität des Kopfs der Gruppe auf. Britische Behörden fahnden mit einem Foto…

4 Tagen ago

Apple stellt neuen Mobilprozessor M4 vor

Er treibt das neue iPad Pro mit OLED-Display an. Apple verspricht eine deutliche Leistungssteigerung gegenüber…

4 Tagen ago

Cyberabwehr: Mindestens zwei kritische Vorfälle pro Tag

Davon entfällt ein Viertel auf staatliche Einrichtungen und 12 Prozent auf Industrieunternehmen.

4 Tagen ago

Tunnelvision: Exploit umgeht VPN-Verschlüsselung

Forscher umgehen die Verschlüsselung und erhalten Zugriff auf VPN-Datenverkehr im Klartext. Für ihren Angriff benötigen…

4 Tagen ago