sql >> Databáze >  >> RDS >> PostgreSQL

Proč PostgreSQL nevrací hodnoty null, když je podmínka <> pravdivá

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ě jako 7 <> NULL . Pokud toto chování není vhodné, použijte IS [ 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.



  1. Jak získám asynchronní / událostmi řízenou podporu LISTEN/NOTIFY v Javě pomocí databáze Postgres?

  2. Vytvořte kumulativní součet v view oracle

  3. MySQL vyhledá a nahradí nějaký text v poli

  4. Děkujeme, Amazon, že jste nás inspirovali k poskytování lepšího DBaaS:SkySQL