Maison >base de données >tutoriel mysql >Comment la priorité des opérateurs affecte-t-elle les résultats des requêtes MySQL avec AND et OR ?
Prépondérance des opérateurs booléens dans MySQL
Les requêtes exploitent souvent des opérateurs logiques comme OR et AND pour filtrer et récupérer des données spécifiques. Comprendre la priorité de ces opérateurs est crucial pour garantir que les requêtes s'exécutent comme prévu.
Dans MySQL, la priorité des opérateurs détermine l'ordre dans lequel les opérations sont évaluées. La documentation MySQL fournit une liste complète des niveaux de priorité des opérateurs, les opérateurs en haut de la liste ayant une priorité plus élevée.
Considérez la requête suivante :
SELECT * FROM tablename WHERE display = 1 OR display = 2 AND content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title LIKE "%hello world%";
Selon la documentation, le Les opérateurs OR et AND ont la même priorité. Cette requête peut donc être interprétée de deux manières :
Parenthèses d'abord :
((display = 1) OR (display = 2)) AND ((content LIKE "%hello world%") OR (tags LIKE "%hello world%") OR (title LIKE "%hello world%"))
De gauche à droite évaluation :
(display = 1 OR display = 2) AND (content LIKE "%hello world%") OR (tags LIKE "%hello world%" OR title LIKE "%hello world%")
Pour éviter toute ambiguïté, il est recommandé d'utiliser des parenthèses pour regrouper les expressions et définir explicitement la priorité des opérateurs. 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%");
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!