sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Por qué PostgreSQL no devuelve valores nulos cuando la condición es <> verdadera?

Cada RDBMS medianamente decente lo hace de la misma manera, porque es correcto .
Estoy citando el manual de Postgres aquí:

Los operadores de comparación ordinarios dan como resultado nulo (que significa "desconocido"), ni verdadero ni falso, cuando cualquiera de las entradas es nula. Por ejemplo, 7 = NULL yieldsnull, al igual que 7 <> NULL . Cuando este comportamiento no sea adecuado, use el IS [ NOT ] DISTINCT FROM construcciones:

expression IS DISTINCT FROM expression
expression IS NOT DISTINCT FROM expression

Tenga en cuenta que estas expresiones funcionan un poco más lento que la simple expression <> expression comparación.

Para boolean valores también existe el IS NOT [TRUE | FALSE] .
Para obtener lo que esperaba en su segunda consulta, escriba:

SELECT * FROM table WHERE avalue IS NOT TRUE;

Violín SQL.