PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Pourquoi PostgreSQL ne renvoie-t-il pas de valeurs nulles lorsque la condition est <> true

Tous Un RDBMS à moitié décent le fait de la même manière, car il est correct .
Je cite ici le manuel de Postgres :

Les opérateurs de comparaison ordinaires donnent null (signifiant "inconnu"), nottrue ou false, lorsque l'une des entrées est nulle. Par exemple, 7 = NULL rendementsnull, tout comme 7 <> NULL . Lorsque ce comportement ne convient pas, utilisez le IS [ NOT ] DISTINCT FROM constructions :

expression IS DISTINCT FROM expression
expression IS NOT DISTINCT FROM expression

Notez que ces expressions s'exécutent un peu plus lentement que la simple expression <> expression comparaison.

Pour boolean valeurs il y a aussi le plus simple IS NOT [TRUE | FALSE] .
Pour obtenir ce que vous attendiez dans votre deuxième requête, écrivez :

SELECT * FROM table WHERE avalue IS NOT TRUE;

SQL Fiddle.