Utilisez la fonction MySQL find_in_set() pour la recherche multi-chaînes
La fonction find_in_set() de MySQL ne peut rechercher qu'une seule chaîne à la fois. Cependant, dans les applications pratiques, il est souvent nécessaire de rechercher plusieurs chaînes en même temps.
Par exemple :
<code class="language-sql">find_in_set('a', 'a,b,c,d')</code>
Ici, « a » est la seule chaîne de recherche. Si vous souhaitez rechercher plusieurs chaînes, telles que « a,b,c », vous pouvez utiliser la méthode suivante :
<code class="language-sql">find_in_set('a', 'a,b,c,d') OR find_in_set('b', 'a,b,c,d') OR find_in_set('c', 'a,b,c,d')</code>
Cette méthode utilise l'opérateur OR pour combiner plusieurs appels find_in_set(). Cependant, une solution plus efficace existe :
<code class="language-sql">WHERE CONCAT(",", `setcolumn`, ",") REGEXP ",(val1|val2|val3),"</code>
Cette méthode ajoute des virgules au début et à la fin du champ « setcolumn » pour la correspondance de modèles d'expressions régulières. Parmi eux :
Cette astuce recherche efficacement les lignes dont 'setcolumn' contient toutes les chaînes spécifiées, offrant une alternative plus flexible et plus efficace aux multiples appels find_in_set().
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!