Maison > développement back-end > tutoriel php > Comment puis-je rechercher plusieurs valeurs stockées dans une seule colonne de base de données ?

Comment puis-je rechercher plusieurs valeurs stockées dans une seule colonne de base de données ?

DDD
Libérer: 2024-12-16 10:04:20
original
872 Les gens l'ont consulté

How Can I Query for Multiple Values Stored in a Single Database Column?

Requête de plusieurs valeurs dans une colonne

Dans les bases de données relationnelles, les colonnes contiennent généralement des valeurs uniques pour chaque ligne. Toutefois, dans certains scénarios, vous devrez peut-être stocker plusieurs valeurs dans une seule colonne, séparées par des délimiteurs tels que des virgules. Cela peut entraîner des difficultés lors de l'interrogation des données, car les opérateurs conventionnels tels que l'opérateur d'égalité ne fonctionnent plus comme prévu.

Par exemple, considérons le tableau suivant, qui stocke les relations parent-enfant :

id     name            children
1      Roberto         Michael,Dia
2      Maria           John,Alex
3      Mary            Alexandre,Diana
Copier après la connexion

Si nous essayons de trouver le(s) parent(s) ayant un enfant nommé "Alex" en utilisant la requête :

WHERE children = 'Alex'
Copier après la connexion

nous récupérerons aucun résultat, même si Alex est un enfant de Marie. En effet, nous recherchons une correspondance exacte, qui n'est pas présente en raison des multiples valeurs dans la colonne enfants.

Pour gérer de telles situations, nous devons explorer des approches alternatives :

Normaliser le schéma :

La solution idéale est de normaliser le schéma et de créer un tableau séparé pour les enfants, avec une ligne distincte pour chaque enfant et un référence au parent. Cela permettrait une interrogation efficace basée sur les noms d'enfants.

Utilisation de FIND_IN_SET :

Si la normalisation du schéma est impossible, vous pouvez utiliser la fonction FIND_IN_SET, qui vérifie si un la valeur existe dans une liste séparée par des virgules. La requête serait :

WHERE FIND_IN_SET('Alex', children)
Copier après la connexion

Cela renverrait le(s) parent(s) qui ont un enfant nommé Alex. Cependant, il est important de noter que FIND_IN_SET n'est pas l'approche la plus efficace et ne doit être utilisée que si la normalisation n'est pas viable.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal