PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Por que o PostgreSQL não retorna valores nulos quando a condição é <> verdadeira


Toda O RDBMS meio decente faz da mesma maneira, porque é correto .
Estou citando o manual do Postgres aqui:

Operadores de comparação comuns produzem null (significando "desconhecido"), nottrue ou false, quando uma das entradas é nula. Por exemplo, 7 = NULL yieldsnull, assim como 7 <> NULL . Quando este comportamento não for adequado, use o IS [ NOT ] DISTINCT FROM constrói:
expression IS DISTINCT FROM expression
expression IS NOT DISTINCT FROM expression

Observe que essas expressões são um pouco mais lentas que a simples expression <> expression comparação.

Para boolean valores há também o mais simples IS NOT [TRUE | FALSE] .
Para obter o que você esperava em sua segunda consulta, escreva:
SELECT * FROM table WHERE avalue IS NOT TRUE;

SQL Fiddle.