Dépannage des clauses SQL WHERE : résolution de l'oubli des paramètres
Cet article traite d'un problème de requête SQL courant dans lequel la clause WHERE
ignore apparemment un paramètre spécifié. Prenons cet exemple :
<code class="language-sql">SELECT * FROM people WHERE university='2' AND MATCH (lname,fname) AGAINST ('+massive' IN BOOLEAN MODE) OR (fname LIKE '%box%' OR lname LIKE '%box%') </code>
Cette requête, de manière inattendue, renvoie des lignes où university
n'est pas « 2 ». Le problème réside dans la priorité des opérateurs et l'ordre des opérations.
La solution consiste à restructurer la clause WHERE
à l'aide de parenthèses pour regrouper correctement les conditions :
<code class="language-sql">SELECT * FROM people WHERE university='2' AND (MATCH (lname,fname) AGAINST ('+massive' IN BOOLEAN MODE) OR fname LIKE '%box%' OR lname LIKE '%box%')</code>
En plaçant les conditions MATCH
et LIKE
entre parenthèses, nous garantissons que la recherche en texte intégral et les conditions LIKE
sont appliquées uniquement aux lignes où university = '2'
. L'opérateur AND
restreint alors correctement les résultats à ceux répondant à tous les critères spécifiés. Cette structure révisée garantit des résultats précis basés sur le filtrage des paramètres prévu.
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!