Maison >base de données >tutoriel mysql >Comment puis-je inverser le GROUP_CONCAT de MySQL pour séparer les données concaténées ?

Comment puis-je inverser le GROUP_CONCAT de MySQL pour séparer les données concaténées ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-15 08:33:18791parcourir

How Can I Reverse MySQL's GROUP_CONCAT to Separate Concatenated Data?

Inverser les effets de GROUP_CONCAT : diviser les données concaténées

Dans MySQL, la fonction GROUP_CONCAT combine plusieurs valeurs d'une colonne spécifique en une seule, chaîne séparée par des virgules. Cependant, il peut y avoir des cas où vous désirez l'effet inverse, où une chaîne concaténée est décomposée en ses composants individuels.

La requête pour réaliser le fractionnement

Pour ce faire, utilisez la requête suivante :

SELECT
  id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) color
FROM
  colors
  INNER JOIN
  (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n
  ON LENGTH(REPLACE(colors, ',' , '')) <= LENGTH(colors)-n.digit
ORDER BY
  id,
  n.digit

Comprendre le Détails

  • Fonction SUBSTRING_INDEX : Cette fonction extrait la nième sous-chaîne d'une chaîne, en commençant à la première occurrence d'un délimiteur spécifié. Dans cette requête, il est utilisé plusieurs fois pour isoler chaque sous-chaîne de couleur.
  • Opérateur UNION : L'opérateur UNION combine les résultats de plusieurs instructions SELECT dans une seule table. Ici, il renvoie une série de nombres représentant les positions des sous-chaînes de couleur.
  • chiffre 1 : Cela ajoute 1 à la valeur numérique pour ignorer le délimiteur virgule au début de chaque sous-chaîne de couleur. .
  • Fonction LENGTH : Cette fonction calcule la longueur d'une chaîne. Ici, il est utilisé pour garantir que la valeur numérique se situe dans la plage de longueur de la chaîne de couleurs.

Exemples de données et de sortie

Pour les exemples de données fourni :

+----+----------------------+
| id | colors               |
+----+----------------------+
| 1  | Red,Green,Blue       |
| 2  | Orangered,Periwinkle |
+----+----------------------+

Le résultat de la requête sera :

+----+------------+
| id | colors     |
+----+------------+
| 1  | Red        |
| 1  | Green      |
| 1  | Blue       |
| 2  | Orangered  |
| 2  | Periwinkle |
+----+------------+

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