Home >Database >Mysql Tutorial >How Can I Split Comma-Separated Values in SQL into Separate Rows?
Split comma separated row values in SQL
In database management, it is common to encounter data stored as comma-separated values (CSV). However, for some analysis or reporting purposes, you may want to split these CSVs into separate rows. In this article, we'll explore a SQL-based approach to performing this split operation.
The solution involves utilizing the SUBSTRING_INDEX() function in MySQL. This function allows us to extract a substring from a specified string based on the delimiter character. We also use a cross join with a count table to generate a series of numbers that are used as row indices for splitting the CSV.
The following is the SQL query:
<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>
This query effectively splits the CSV values of the table1
column in the values
table and creates a new row for each value. Count tables allow splitting multiple values in a single row.
Example data and output:
Consider the following data from the table1
table:
values |
---|
somethingA,somethingB,somethingC |
somethingElseA, somethingElseB |
Applying the query to this data will produce the following output:
value |
---|
somethingA |
somethingB |
somethingC |
somethingElseA |
somethingElseB |
By leveraging this technology, data stored in CSV format can be conveniently split into individual rows, allowing for further analysis or processing.
The above is the detailed content of How Can I Split Comma-Separated Values in SQL into Separate Rows?. For more information, please follow other related articles on the PHP Chinese website!