Requête de correspondances exactes de chaînes séparées par des virgules dans MySQL
L'interrogation de valeurs spécifiques présente souvent des défis lorsque l'on travaille avec des champs MySQL contenant des chaînes séparées par des virgules. Par exemple, lorsque vous recherchez tous les enregistrements avec une valeur spécifique dans la chaîne, vous pouvez récupérer par inadvertance des enregistrements contenant d'autres valeurs pour le numéro cible.
Considérez la requête suivante :
<code class="language-sql">select * from shirts where colors like '%1%'</code>
Cette requête est conçue pour récupérer toutes les chemises de couleur rouge (color=1). Cependant, il récupère également les chemises de couleurs gris (=12) et orange (=15) car ces couleurs contiennent le chiffre 1.
Pour résoudre ce problème, vous pouvez améliorer la requête pour vous assurer qu'elle sélectionne uniquement la valeur de couleur exacte que vous recherchez. Voici deux méthodes couramment utilisées :
1. Connectez les virgules
Cette méthode consiste à ajouter des virgules à gauche et à droite de la valeur cible. Cela garantit que la chaîne de recherche correspond uniquement aux valeurs qui sont exactement égales à la valeur souhaitée.
<code class="language-sql">select * from shirts where CONCAT(',', colors, ',') like '%,1,%'</code>
2. Utilisez find_in_set
Les fonctionsfind_in_set
peuvent également être utilisées pour obtenir les résultats souhaités. Cette fonction prend deux paramètres :
Lorsque find_in_set
renvoie une valeur supérieure à 0, cela signifie que la valeur cible existe dans la chaîne. Voici un exemple de requête :
<code class="language-sql">select * from shirts where find_in_set('1', colors) > 0</code>
En utilisant l'une ou l'autre de ces deux méthodes, vous pouvez vous assurer que vos requêtes MySQL récupèrent avec précision les enregistrements pour les valeurs de couleur exactes qui vous intéressent, sans détecter de correspondances indésirables.
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!