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>
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!