Hver halvvejs anstændigt RDBMS gør det på samme måde, fordi det er korrekt .
Jeg citerer Postgres-manualen her:
Almindelige sammenligningsoperatorer giver null (betyder "ukendt"), ikke sand eller falsk, når begge input er nul. For eksempel 7 =NULL
yieldsnull, ligesom 7 <> NULL
gør . Når denne adfærd ikke er egnet, skal du bruge
expression IS DISTINCT FROM expression
expression IS NOT DISTINCT FROM expression
Bemærk, at disse udtryk udfører en smule langsommere end simple udtryk <> udtryk
sammenligning.
For boolesk
værdier er der også den enklere IS NOT [TRUE | FALSK]
.
For at få det, du forventede i din anden forespørgsel, skal du skrive:
SELECT * FROM table WHERE avalue IS NOT TRUE;
SQL Fiddle.