Maison >développement back-end >tutoriel php >Comment puis-je interroger efficacement une colonne de base de données contenant des valeurs séparées par des virgules ?

Comment puis-je interroger efficacement une colonne de base de données contenant des valeurs séparées par des virgules ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-30 21:44:10779parcourir

How Can I Efficiently Query a Database Column Containing Comma-Separated Values?

Gestion des requêtes avec plusieurs valeurs dans une seule colonne

Dans ce scénario, nous rencontrons une table avec une colonne nommée "enfants" qui stocke noms séparés par des virgules. L'objectif est de récupérer les enregistrements dans lesquels un enfant spécifié, par exemple "Alex", existe dans cette colonne.

Cependant, l'utilisation d'une simple vérification d'égalité (par exemple, "WHERE children = 'Alex'") échoue car plusieurs noms sont présents dans chaque cellule. Les recherches LIKE de base ("WHERE children LIKE '%Alex%'") conduisent à des faux positifs en raison de correspondances partielles (par exemple, "Alexandre" ou "Diana").

Pour relever ce défi, l'approche optimale serait consister à normaliser la structure des données en introduisant une table séparée pour stocker les relations enfant-parent. Cela nous permettrait d'effectuer efficacement des jointures et de récupérer les informations souhaitées.

Néanmoins, si la normalisation n'est pas réalisable, une solution utilisant la fonction FIND_IN_SET est présentée :

WHERE FIND_IN_SET('Alex', children) > 0

Cette fonction recherche la chaîne spécifiée dans la valeur de la colonne et renvoie un nombre positif si la chaîne est présente. En incorporant cette condition dans la clause WHERE, nous pouvons identifier les lignes où l'enfant "Alex" est répertorié.

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