PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Warum gibt PostgreSQL keine Nullwerte zurück, wenn die Bedingung <> wahr ist

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.