Maison > base de données > tutoriel mysql > Comment puis-je effectuer efficacement plusieurs recherches de chaînes dans MySQL ?

Comment puis-je effectuer efficacement plusieurs recherches de chaînes dans MySQL ?

Barbara Streisand
Libérer: 2025-01-11 19:36:42
original
527 Les gens l'ont consulté

How Can I Efficiently Perform Multiple String Searches in MySQL?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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 :

  • Les valeurs dans 'setcolumn' sont représentées par ",a,b,c,d,".
  • L'expression régulière ',(val1|val2|val3)' correspond à la sous-chaîne 'a', 'b' ou 'c' dans la chaîne ',a,b,c,d,'.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal