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

Copilot Wave 2: Microsoft kündigt neue KI-Funktionen an

Copilot wird stärker in Microsoft 365 integriert. Neue Funktionen stehen unter anderem für Excel, Outlook,…

6 Stunden ago

Kritische RCE-Schwachstelle in Google Cloud Platform

Schwachstelle weist laut Tenable auf schwerwiegende Sicherheitslücke in Google Cloud Diensten hin, insbesondere App Engine,…

23 Stunden ago

Microsoft macht Office LTSC 2024 allgemein verfügbar

Die neue Version kommt mit einem Supportzeitraum von fünf Jahren. Währenddessen erhält Office LTSC 2024…

23 Stunden ago

iOS 18 schließt 33 Sicherheitslücken

Sie führen unter Umständen zur Preisgabe vertraulicher Informationen oder gar zu einem Systemabsturz. Apples KI-Dienste…

23 Stunden ago

Intel verschiebt Bau der Chipfabrik in Magdeburg

Das Projekt liegt wahrscheinlich für rund zwei Jahre auf Eis. Aus der Fertigungssparte Intel Foundry…

1 Tag ago

Google kündigt neue Sicherheitsfunktionen für Chrome an

Der Sicherheitscheck entzieht unsicheren Websites automatisch alle Berechtigungen. Zudem können Nutzer in Chrome künftig Websites…

2 Tagen ago