Philipp Hasenfratz: MySQL-select-Suchfunktion verfeinern

Beitrag lesen

Halihallo Ilja

jetzt muss ich auch noch mal meinen senf dazu geben.

Naja, das habe ich mir bei meinem Posting eben auch gedacht ;-)

Jep, und zudem lässt sich NULL nicht vergleichen, da das Ergebnis
nicht deutbar wäre.
ist es nicht vielmehr so, dass es sich zwar vergleichen läßt, aber immer das gleiche ergebnis hervorbringt, nämlich false ?

Nein. Das Ergebnis eines Vergleiches ist in der Tat wiederum NULL,
wenn einer der Operanden NULL ist. Es ist jedoch IMO eine Konvention,
dass dieses NULL z.B. bei einer WHERE-Klausel zu "false"
uminterpretiert wird. Merkbar wird dies bei einem attr >= ALL
(subselect), oder eben attr => ANY (subselect) [oder halt einem
anderen Vergleichsoperator].

Ich hab das jetzt nicht auf meiner DBMS ausprobiert, aber dort müsste
sich schliessen lassen, dass es als false interpretiert wird, wie du
gesagt hast.

Faktum bleibt, dass NULL ein nicht vergleichbarer Wert ist, denn NULL
hat zum einen viele Bedeutungen (not applicable, unknown, not
known yet etc.) und genauso unterschiedlich kann die Interpretation
des Vergleichsergebnisses sein. Da eben kein eindeutiger Schluss aus
einer Vergleichsoperation folgt, ist das Ergebnis wieder NULL.

Dies stimmt nicht immer bei Bool'schen Operatoren:
z.B. ist NULL OR TRUE = TRUE, denn es spielt keine Rolle, was als
Wert oder "Unwert" für NULL angenommen wird.
Genauso verhält sich ein NULL AND FALSE, das gibt immer FALSE.

Viele Grüsse

Philipp