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
Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.
Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…
Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…
Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…
Hinter 84 Prozent der Zwischenfälle bei Herstellern stecken Schwachstellen in der Lieferkette. Auf dem Vormarsch…
Es kommt angeblich 2028 auf den Markt. Das aufgeklappte Gerät soll die Displayfläche von zwei…