Alle halbwegs anständiges RDBMS macht es genauso, weil es richtig ist .
Ich zitiere hier das Postgres-Handbuch:
Gewöhnliche Vergleichsoperatoren liefern null (bedeutet „unbekannt“), nottrue oder false, wenn eine der Eingaben null ist. Beispiel:7 = NULL
yieldsnull, ebenso wie 7 <> NULL
. Wenn dieses Verhalten nicht geeignet ist, verwenden Sie IS [ NOT ] DISTINCT FROM
Konstrukte:
expression IS DISTINCT FROM expression
expression IS NOT DISTINCT FROM expression
Beachten Sie, dass diese Ausdrücke etwas langsamer ausgeführt werden als der einfache expression <> expression
Vergleich.
Für boolean
Werten gibt es auch die einfacheren IS NOT [TRUE | FALSE]
.
Um das zu erhalten, was Sie in Ihrer zweiten Abfrage erwartet haben, schreiben Sie:
SELECT * FROM table WHERE avalue IS NOT TRUE;
SQL-Geige.