Home >Database >Mysql Tutorial >How Can I Split Comma-Separated Values in SQL into Separate Rows?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-14 09:55:42397browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn