sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor returnerer PostgreSQL ikke null-værdier, når betingelsen er <> sand

Hver halvvejs anstændigt RDBMS gør det på samme måde, fordi det er korrekt .
Jeg citerer Postgres-manualen her:

Almindelige sammenligningsoperatorer giver null (betyder "ukendt"), ikke sand eller falsk, når begge input er nul. For eksempel 7 =NULL yieldsnull, ligesom 7 <> NULL gør . Når denne adfærd ikke er egnet, skal du bruge ER [ NOT ] DISTINCT FROM konstruerer:

expression IS DISTINCT FROM expression
expression IS NOT DISTINCT FROM expression

Bemærk, at disse udtryk udfører en smule langsommere end simple udtryk <> udtryk sammenligning.

For boolesk værdier er der også den enklere IS NOT [TRUE | FALSK] .
For at få det, du forventede i din anden forespørgsel, skal du skrive:

SELECT * FROM table WHERE avalue IS NOT TRUE;

SQL Fiddle.



  1. Sådan opdeles en kommasepareret streng i Oracle

  2. Hvad er forskellen mellem REFERENCER med eller uden en UDENLANDSKE NØGLE

  3. SQLite - Opret en tabel

  4. Sådan forbindes C++-programmer til MariaDB