Maison > base de données > tutoriel mysql > Comment puis-je diviser les valeurs séparées par des virgules dans SQL en lignes distinctes ?

Comment puis-je diviser les valeurs séparées par des virgules dans SQL en lignes distinctes ?

Mary-Kate Olsen
Libérer: 2025-01-14 09:55:42
original
402 Les gens l'ont consulté

How Can I Split Comma-Separated Values in SQL into Separate Rows?

Diviser les valeurs des lignes séparées par des virgules dans SQL

Dans la gestion de bases de données, il est courant de rencontrer des données stockées sous forme de valeurs séparées par des virgules (CSV). Toutefois, à des fins d'analyse ou de reporting, vous souhaiterez peut-être diviser ces CSV en lignes distinctes. Dans cet article, nous explorerons une approche basée sur SQL pour effectuer cette opération de fractionnement.

La solution consiste à utiliser la fonction SUBSTRING_INDEX() dans MySQL. Cette fonction nous permet d'extraire une sous-chaîne d'une chaîne spécifiée en fonction du caractère délimiteur. Nous utilisons également une jointure croisée avec une table de comptage pour générer une série de nombres utilisés comme indices de ligne pour diviser le CSV.

Voici la requête SQL :

<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

Cette requête divise efficacement les valeurs CSV de la colonne table1 dans la table values et crée une nouvelle ligne pour chaque valeur. Les tables de comptage permettent de diviser plusieurs valeurs sur une seule ligne.

Exemple de données et de sortie :

Considérez les données suivantes du tableau table1 :

values
somethingA,somethingB,somethingC
somethingElseA, somethingElseB

L'application de la requête à ces données produira le résultat suivant :

value
somethingA
somethingB
somethingC
somethingElseA
somethingElseB

En tirant parti de cette technologie, les données stockées au format CSV peuvent être facilement divisées en lignes individuelles, permettant une analyse ou un traitement plus approfondi.

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