Maison > base de données > tutoriel mysql > Comment convertir des valeurs séparées par des virgules en lignes individuelles dans MySQL ?

Comment convertir des valeurs séparées par des virgules en lignes individuelles dans MySQL ?

Patricia Arquette
Libérer: 2025-01-14 08:30:42
original
608 Les gens l'ont consulté

How to Convert Comma-Separated Values into Individual Rows in MySQL?

Transformation de valeurs séparées par des virgules en lignes individuelles dans MySQL

Ce guide montre comment convertir les valeurs séparées par des virgules dans une colonne MySQL en lignes individuelles. Disons que vous avez une table avec une colonne contenant des données délimitées par des virgules comme celle-ci :

<code>somethingA,somethingB,somethingC
somethingElseA, somethingElseB</code>
Copier après la connexion

L'objectif est de restructurer ces données en :

<code>somethingA
somethingB
somethingC
somethingElseA
somethingElseB</code>
Copier après la connexion

Cette requête SQL réalise cette transformation :

<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value
FROM table1 t CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
    ORDER BY n
) n
WHERE n.n <= LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) + 1;</code>
Copier après la connexion

Explication :

Cette requête utilise intelligemment une table de nombres générée dynamiquement (la sous-requête) et la fonction SUBSTRING_INDEX(). SUBSTRING_INDEX() extrait les sous-chaînes en fonction d'un délimiteur. Le tableau des nombres fournit l'index pour chaque valeur séparée par des virgules. La clause WHERE garantit que la requête ne traite que les valeurs correspondant au nombre réel d'éléments séparés par des virgules dans chaque ligne.

Points clés :

  • SUBSTRING_INDEX(string, delimiter, count) : Cette fonction est cruciale. string est l'entrée, delimiter est la virgule et count spécifie quelle occurrence du délimiteur utiliser. Un count de -1 obtient tout après la dernière occurrence du délimiteur.
  • La sous-requête crée une table de nombres temporaire. Vous pouvez le remplacer par une table de nombres préexistante pour améliorer les performances si vous effectuez fréquemment ce type d'opération.
  • La clause WHERE ajuste dynamiquement le nombre de lignes renvoyées en fonction du nombre de virgules dans la chaîne d'origine, évitant ainsi les erreurs.

Cette méthode divise efficacement les valeurs séparées par des virgules en lignes individuelles, ce qui donne un ensemble de données plus propre et plus gérable.

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