Priorité des opérateurs logiques SQL : comprendre son importance
En SQL, l'ordre des opérations des opérateurs logiques (notamment « ET » et « OU ») joue un rôle crucial dans la détermination des résultats des requêtes. Les opérateurs avec une priorité plus élevée sont évalués avant les opérateurs avec une priorité plus faible, ce qui peut conduire à des résultats différents.
ET et OU prioritaire
En SQL, "AND" a une priorité plus élevée que "OR". Prenons l'exemple suivant :
<code class="language-sql">SELECT [...] FROM [...] WHERE some_col in (1,2,3,4,5) AND some_other_expr</code>
<code class="language-sql">SELECT [...] FROM [...] WHERE some_col in (1,2,3) or some_col in (4,5) AND some_other_expr</code>
La première instruction renvoie les lignes où some_col
est compris entre 1 et 5 et some_other_expr
est vrai. Cependant, puisque « AND » a une priorité plus élevée que « OR », la deuxième instruction n’est pas équivalente.
Évaluation de la deuxième déclaration
Puisque « AND » a une priorité plus élevée, la deuxième instruction est calculée comme suit :
<code class="language-sql">WHERE (some_col in (1,2,3) or some_col in (4,5)) AND some_other_expr</code>
Cela signifie que la requête renvoie des lignes avec :
some_col
dans la plage de 1 à 3, ou
some_col
Dans la fourchette 4-5puis
some_other_expr
est vraiPour obtenir la fonctionnalité souhaitée, les priorités peuvent être remplacées à l'aide de parenthèses :
<code class="language-sql">WHERE (some_col in (1,2,3) OR some_col in (4,5)) AND some_other_expr</code>
Cela garantit que la requête renvoie des lignes avec :
some_col
Dans la fourchette de 1 à 5puis
some_other_expr
est vraiRéférence prioritaire
Pour ceux qui souhaitent des éclaircissements supplémentaires, veuillez vous référer aux ressources suivantes :
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!