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 = NULLyieldsnull, stejně jako7 <> NULL. Pokud toto chování není vhodné, použijteIS [ NOT ] DISTINCT FROMkonstrukce: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.