Pourquoi l'inégalité NULL est fausse
L'application de la logique ternaire de SQL joue un rôle crucial dans la compréhension pourquoi NULL n'est pas égal à NULL. En logique ternaire, NULL représente une valeur inconnue plutôt qu'une valeur spécifique. Ce concept guide l'évaluation des tests d'égalité et d'inégalité.
Lors de l'évaluation de l'égalité, deux valeurs NULL ne sont considérées ni égales ni inégales. En effet, l’état d’inconnu ne peut être définitivement comparé à un autre état inconnu. Ainsi, l'expression (NULL = NULL) renvoie NULL, signifiant l'absence de réponse claire.
Dans le cas de tests d'inégalité, (NULL != NULL) renvoie également FALSE. En effet, la logique ternaire dicte qu’une valeur inconnue ne peut pas être définitivement déclarée inégale à une autre valeur inconnue. Par conséquent, on ne sait pas s'ils sont égaux ou non.
Implication pour les contrôles d'inégalité
La discussion ci-dessus précise que l'expression (A != B) est suffisante pour tester l'inégalité, même si A ou B est NULL. En effet, les règles de logique ternaire stipulent que toute opération impliquant une valeur NULL restera inconnue. Par conséquent, l'expression (A != B) renvoie FALSE si A et B sont NULL, indiquant l'absence de réponse définitive.
Si vous exigez explicitement un résultat VRAI lorsque A et B sont NULL, vous peut utiliser l'expression plus verbeuse :
WHERE ((A != B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
Cependant, il est important de noter que cette condition s'adresse à un cas d'utilisation spécifique où un résultat VRAI est souhaité pour les valeurs NULL. Dans la plupart des cas, l'expression la plus simple (A != B) suffit car elle suit les principes de la logique ternaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!