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.