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

SQL n'affiche pas les valeurs nulles sur une requête non égale ?

Dans plusieurs langages, NULL est géré différemment :la plupart des gens connaissent la logique à deux valeurs où true et false sont les seules valeurs comparables dans les expressions booléennes (même est faux est défini comme 0 et vrai comme toute autre chose).

En SQL standard, vous devez penser à la logique à trois valeurs. NULL n'est pas traité comme une valeur réelle, vous pouvez plutôt l'appeler "inconnu". Donc, si la valeur est inconnue, il n'est pas clair si dans votre cas state est 0, 1 ou n'importe quoi d'autre. Donc NULL != 1 résultats à NULL à nouveau.

Cela conclut que chaque fois que vous filtrez quelque chose qui peut être NULL, vous devez traiter les valeurs NULL par vous-même. Notez que la syntaxe est également différente :les valeurs NULL ne peuvent être comparées qu'avec x IS NULL au lieu de x = NULL . Voir Wikipedia pour une table de vérité montrant les résultats des opérations logiques.