sql >> Databasteknik >  >> RDS >> PostgreSQL

Varför returnerar inte PostgreSQL nollvärden när villkoret är <> sant

Varje halvvägs hyfsat RDBMS gör det på samma sätt, eftersom det är rätt .
Jag citerar Postgres-manualen här:

Vanliga jämförelseoperatorer ger noll (betecknar "okänt"), inte sant eller falskt, när någon av indata är noll. Till exempel, 7 =NULL yieldsnull, liksom 7 <> NULL . När detta beteende inte är lämpligt, använd ÄR [ INTE ] DISTINCT FROM konstruktioner:

expression IS DISTINCT FROM expression
expression IS NOT DISTINCT FROM expression

Observera att dessa uttryck fungerar lite långsammare än enkla uttryck <> uttryck jämförelse.

För boolesk värden det finns också det enklare IS NOT [TRUE | FALSE] .
För att få vad du förväntade dig i din andra fråga, skriv:

SELECT * FROM table WHERE avalue IS NOT TRUE;

SQL-fiol.



  1. Oracle till PostgreSQL:ANSI yttre kopplingssyntax i PostgreSQL

  2. SQL-fråga för att hitta post med ID som inte finns i en annan tabell

  3. Hur man ändrar bakgrundsfärgen för ett formulär i Access 2016

  4. Utmatar alla PHP-fel till databasen, inte error_log