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

Comment puis-je rechercher efficacement plusieurs chaînes dans une colonne MySQL ?

DDD
Libérer: 2025-01-11 19:41:42
original
371 Les gens l'ont consulté

How Can I Efficiently Search for Multiple Strings Within a MySQL Column?

Utilisez la fonction find_in_set de MySQL pour rechercher plusieurs chaînes

La fonction find_in_set() de MySQL vous permet de rechercher une chaîne spécifique dans un ensemble de chaînes stockées dans une colonne. Cependant, il ne peut effectuer une recherche qu'à l'aide d'une seule chaîne de recherche.

Défi : Rechercher à l'aide de plusieurs chaînes

Vous pouvez rencontrer des situations dans lesquelles vous devez rechercher plusieurs chaînes dans un ensemble de chaînes. Par exemple, vous souhaiterez peut-être vérifier si un client a acheté un produit spécifique appartenant à une catégorie spécifique. Dans ce cas, utiliser find_in_set() ne suffit pas.

Astuce pour simuler find_in_set() pour implémenter la recherche multi-chaînes

Il existe une solution de contournement pour simuler une recherche multi-chaînes à l'aide de find_in_set() :

  1. Ajoutez des virgules au début et à la fin des colonnes contenant des ensembles de chaînes. Cela garantit que l'ensemble est entouré de virgules.
  2. Utilisez des expressions régulières (REGEX) pour rechercher des modèles contenant des chaînes de recherche séparées par des symboles de barre verticale (|). Le caractère barre verticale représente un OU logique, correspondant à n'importe quelle chaîne.

Description de l'expression régulière :

  • "," - correspond à une virgule au début d'une collection.
  • setcolumn - Le nom de la colonne contenant l'ensemble de chaînes.
  • "," - correspond à la virgule à la fin de l'ensemble.
  • ," - correspond à une virgule suivie d'un guillemet double.
  • (val1|val2|val3) - Chaîne de recherche délimitée par des barres verticales, entre parenthèses.
  • ," - correspond à une virgule suivie d'un guillemet double.

Exemple :

Considérez la requête suivante :

<code class="language-sql">SELECT *
FROM table
WHERE CONCAT(",", `product_set`, ",") REGEXP ",(electronics|clothing|accessories),";</code>
Copier après la connexion

Dans cette requête, la colonne product_set contient une liste de produits achetés par le client, séparés par des virgules. L'expression REGEXP vérifie si la collection contient l'une de ces trois chaînes de recherche : "électronique", "vêtements" ou "accessoires".

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal