sql >> Database >  >> RDS >> PostgreSQL

Waarom retourneert PostgreSQL geen null-waarden als de voorwaarde <> waar is?

Elke half fatsoenlijke RDBMS doet het op dezelfde manier, omdat het correct is .
Ik citeer hier de handleiding van Postgres:

Gewone vergelijkingsoperatoren leveren null op (wat "onbekend" betekent), niet waar of niet waar, wanneer een van beide invoer nul is. Bijvoorbeeld 7 = NULL opbrengstennull, evenals 7 <> NULL . Als dit gedrag niet geschikt is, gebruik dan de IS [ NOT ] DISTINCT FROM constructies:

expression IS DISTINCT FROM expression
expression IS NOT DISTINCT FROM expression

Merk op dat deze expressies iets langzamer werken dan eenvoudige expression <> expression vergelijking.

Voor boolean waarden is er ook de eenvoudigere IS NOT [TRUE | FALSE] .
Om te krijgen wat je verwachtte in je tweede zoekopdracht, schrijf je:

SELECT * FROM table WHERE avalue IS NOT TRUE;

SQL Fiddle.



  1. Wat is een databank? En een DBMS?

  2. oracle -- Splits meerdere door komma's gescheiden waarden in de Oracle-tabel naar meerdere rijen

  3. Genereer een datumbereik met SQL

  4. verbinding maken met de postgres-server op google compute engine