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 ?
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!