Maison >base de données >tutoriel mysql >Comment diviser des chaînes concaténées dans MySQL en lignes individuelles ?
Diviser les chaînes concaténées dans MySQL
Lorsque vous travaillez avec des tables de base de données, vous pouvez rencontrer des scénarios dans lesquels une seule colonne contient plusieurs valeurs concaténées en une seule chaîne. Alors que la fonction GROUP_CONCAT excelle dans la combinaison de plusieurs lignes en une seule chaîne, son opération inverse, qui consiste à diviser une chaîne concaténée en lignes individuelles, peut constituer un défi. Cette opération est communément appelée expansion ou décomposition de chaîne.
Énoncé du problème :
Un tableau vous est présenté qui stocke une colonne nommée « couleurs » contenant des virgules. listes de couleurs séparées. Votre objectif est de restructurer le tableau dans un format où chaque ligne représente une seule couleur.
Exemple de tableau :
id | colors |
---|---|
1 | Red,Green,Blue |
2 | Orangered,Periwinkle |
Tableau souhaité Format :
id | colors |
---|---|
1 | Red |
1 | Green |
1 | Blue |
2 | Orangered |
2 | Periwinkle |
Solution :
Pour obtenir le résultat souhaité, vous pouvez utiliser le MySQL suivant requête :
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) AS color FROM colors INNER JOIN (SELECT 0 AS digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) AS n ON LENGTH(REPLACE(colors, ',', '')) <= LENGTH(colors)-n.digit ORDER BY id, n.digit
Explication :
Remarque : Cette requête suppose que chaque ligne contient un maximum de 4 couleurs. Si vos lignes peuvent avoir plus de 4 couleurs, vous devrez modifier la sous-requête pour générer une séquence de nombres plus grande.
En implémentant cette requête, vous pouvez diviser efficacement les chaînes concaténées de votre table en lignes individuelles, permettant un traitement et une analyse plus faciles.
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!