Každý napůl slušné RDBMS to dělá stejně, protože je to správné .
Zde cituji příručku Postgres:
Obyčejné porovnávací operátory dávají hodnotu null (znamenající "neznámé"), nottrue nebo false, když je kterýkoli vstup null. Například
7 = NULL
yieldsnull, stejně jako7 <> NULL
. Pokud toto chování není vhodné, použijteIS [ NOT ] DISTINCT FROM
konstrukce:expression IS DISTINCT FROM expression expression IS NOT DISTINCT FROM expression
Všimněte si, že tyto výrazy fungují o něco pomaleji než jednoduchý expression <> expression
srovnání.
Pro boolean
hodnoty tam jsou také jednodušší IS NOT [TRUE | FALSE]
.
Chcete-li získat to, co jste očekávali ve svém druhém dotazu, napište:
SELECT * FROM table WHERE avalue IS NOT TRUE;
SQL Fiddle.