Maison >base de données >tutoriel mysql >Comment puis-je interroger efficacement MySQL pour obtenir des correspondances exactes dans les champs de valeurs séparées par des virgules ?

Comment puis-je interroger efficacement MySQL pour obtenir des correspondances exactes dans les champs de valeurs séparées par des virgules ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-22 21:41:12291parcourir

How Can I Efficiently Query MySQL for Exact Matches in Comma-Separated Value Fields?

Optimisation des requêtes MySQL pour les valeurs séparées par des virgules

Examinons une table SHIRTS avec un champ COLORS stockant des codes de couleur numériques séparés par des virgules. Une simple LIKE requête peut donner des résultats inexacts :

<code class="language-sql">SELECT * FROM shirts WHERE colors LIKE '%1%'</code>

Cette requête renvoie les chemises contenant « 1 » n'importe où dans le champ colors, y compris les chemises avec des couleurs comme 1, 12 ou 15. Pour trouver uniquement les chemises avec le code couleur 1, nous avons besoin de méthodes plus précises.

Une technique efficace consiste à encadrer la chaîne colors de virgules avant la comparaison :

<code class="language-sql">SELECT * FROM shirts WHERE CONCAT(',', colors, ',') LIKE '%,1,%'</code>

Cela garantit que seul le code couleur 1, précisément délimité par des virgules, correspond.

Une autre approche efficace utilise la fonction FIND_IN_SET() :

<code class="language-sql">SELECT * FROM shirts WHERE FIND_IN_SET('1', colors) > 0</code>

FIND_IN_SET() vérifie directement l'existence du « 1 » dans la liste séparée par des virgules dans le champ colors, fournissant des résultats précis. Cette méthode est généralement privilégiée pour sa clarté et son efficacité.

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!

Déclaration:
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