Maison > base de données > tutoriel mysql > le corps du texte

Comment interroger efficacement une colonne séparée par des virgules pour une valeur spécifique ?

Patricia Arquette
Libérer: 2024-11-03 17:02:29
original
377 Les gens l'ont consulté

How to Efficiently Query a Comma-Separated Column for a Specific Value?

Comment interroger une colonne séparée par des virgules pour une valeur spécifique sans instructions LIKE redondantes

Les tables de base de données ont souvent des colonnes qui stockent des valeurs séparées par des virgules listes de valeurs. Pour récupérer des lignes contenant une valeur particulière, on peut utiliser des instructions LIKE. Cependant, l'utilisation de plusieurs instructions LIKE peut s'avérer fastidieuse et inefficace.

Inconvénients de l'utilisation des instructions LIKE

Dans l'exemple fourni, la table stocke les catégories sous forme de valeurs séparées par des virgules :

ID | CATEGORIES
---------------
1  | c1
2  | c2,c3
3  | c3,c2
4  | c3
5  | c4,c8,c5,c100
Copier après la connexion

Pour trouver les lignes contenant "c2", on pourrait utiliser :

SELECT id FROM table WHERE categories LIKE '%c2%';
Copier après la connexion

Cependant, cela correspondrait également aux lignes avec "c2" n'importe où dans la chaîne, ce qui entraînerait des faux positifs . L'utilisation de plusieurs instructions LIKE pour vérifier des combinaisons spécifiques peut être fastidieuse et sujette aux erreurs.

Approche alternative : recherche délimitée par des virgules

Une approche plus efficace consiste à utiliser une Recherche délimitée par des virgules :

select 
  * 
from
  YourTable 
where 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'
Copier après la connexion

Cette requête recherche la valeur complète entourée de virgules, garantissant des correspondances exactes. Cependant, il comporte des limites car il ne suppose aucun espace ni virgule dans les valeurs.

Solution optimale : tableau de catégories séparé

Pour éviter ces limitations et améliorer les performances, il est Il est fortement recommandé de créer une table de catégories distincte liée à la table principale avec une relation plusieurs-à-plusieurs. Cela permet des requêtes et une manipulation de données efficaces sans opérations de chaîne fastidieuses ni risque de fausses correspondances.

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