Comprendre la priorité des opérateurs SQL dans les clauses WHERE :
L'évaluation précise des clauses SQL dépend de la compréhension de la priorité des opérateurs. La priorité dicte l'ordre d'évaluation des opérateurs tels que WHERE
et AND
au sein d'une seule expression.OR
et AND
Préséance :OR
a priorité sur AND
. Cela signifie que les conditions OR
sont traitées avant les conditions AND
dans une expression combinée. Considérez ces exemples :OR
SELECT [...] FROM [...] WHERE some_col IN (1,2,3,4,5) AND some_other_expr
SELECT [...] FROM [...] WHERE some_col IN (1,2,3) OR some_col IN (4,5) AND some_other_expr
doit être compris entre 1 et 5 some_col
et satisfaire . Cependant, dans la deuxième requête, la condition some_other_expr
est évaluée après la condition OR
. Il vérifie si AND
est dans (1,2,3) ou (si c'est faux) si some_col
est dans (4,5) some_col
et est vrai.some_other_expr
Illustration de la table de vérité :
La table de vérité suivante met en évidence la différence d'évaluation :
some_col | some_other_expr | First Statement | Second Statement |
---|---|---|---|
1 | True | True | True |
1 | False | False | False |
3 | True | True | True |
3 | False | False | False |
4 | True | False | True |
4 | False | False | False |
5 | True | False | True |
5 | False | False | False |
est 4 ou 5. Cet écart découle de la préséance de some_col
sur AND
.OR
Contrôle de la priorité avec des parenthèses :
Pour contrôler explicitement l'ordre des opérations, utilisez des parenthèses pour regrouper les conditions. Cela remplace la priorité par défaut. Par exemple :
SELECT [...] FROM [...] WHERE (some_col IN (1,2,3) OR some_col IN (4,5)) AND some_other_expr
sont évaluées en premier, puis la condition OR
est appliquée au résultat.AND
Lectures complémentaires :
Pour des informations détaillées sur la priorité des opérateurs, consultez la documentation de votre système de base de données spécifique :
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!