Dans MySQL, l'ordre des opérations pour les opérateurs logiques, tels que OR et AND, détermine l'interprétation des requêtes complexes. Cet article explique les règles de priorité et leur impact sur les résultats des requêtes.
La documentation MySQL fournit une liste complète des priorités des opérateurs, comme suit :
INTERVAL BINARY, COLLATE ! - (unary minus), ~ (unary bit inversion) ^ *, /, DIV, %, MOD -, + <<, >> & | = (comparison), <=, >=, >, <, <>, !=, IS, LIKE, REGEXP, IN BETWEEN, CASE, WHEN, THEN, ELSE NOT &&, AND XOR ||, OR = (assignment), :=
Selon à cette hiérarchie de priorité, la requête suivante serait interprétée comme :
SELECT * FROM tablename WHERE display = 1 OR ( display = 2 AND content LIKE "%hello world%" ) OR tags LIKE "%hello world%" OR title = "%hello world%"
La requête ci-dessus recherche les lignes où soit :
La clause WHERE est évaluée dans l'ordre suivant :
Pour garantir une interprétation sans ambiguïté, il est recommandé d'utiliser explicitement les parenthèses. Par exemple :
SELECT * FROM tablename WHERE ((display = 1) OR (display = 2)) AND ((content LIKE "%hello world%") OR (tags LIKE "%hello world%") OR (title LIKE "%hello world%"))
Cette requête garantit que les lignes sont récupérées si elles remplissent l'une des conditions 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!