How to Convert Comma-Separated Values to Rows in MySQL

Learn how to efficiently transform comma-separated values in a single column into individual rows using MySQL queries. Explore step-by-step examples with clear code snippets for a better understanding.


In MySQL, it’s common to encounter situations where data is stored as comma-separated values in a single column. While this format can be useful for storage efficiency, there are times when you need to work with this data in a more structured way. In this article, we’ll explore how to efficiently convert comma-separated values to rows using MySQL queries. We’ll provide step-by-step examples with clear code snippets to ensure a thorough understanding.

Understanding the Problem:

Imagine you have a scenario where you need to process a list of user IDs stored as comma-separated values within a single column. For instance, let’s say you have a configuration table named mdl_config where the value column contains a string of user IDs like this: 2,8011,7426. You want to transform these values into separate rows to perform further operations or analysis.

The Solution:

To achieve this, we’ll break down the process into several steps:

  1. Creating a Numbers Table: We’ll start by creating a numbers table that will generate a series of numbers. This will help us split the comma-separated values.
  2. Using SUBSTRING_INDEX: We’ll use the SUBSTRING_INDEX function to extract individual IDs from the comma-separated string.
  3. CROSS JOIN for Splitting: By performing a CROSS JOIN between the numbers table and the original table, we can split the comma-separated values into multiple rows.


Step-by-Step Implementation:

Let’s take a look at how we can implement the solution using SQL queries.

Breaking Down the Query:

  • We use the SUBSTRING_INDEX function to extract individual IDs from the comma-separated value column.
  • The CROSS JOIN with the numbers table helps in creating multiple rows for each ID in the comma-separated string.
  • The WHERE clause filters the results based on the configuration name.

Benefits and Considerations:

The approach described above provides a way to effectively convert comma-separated values into rows in MySQL. This technique can be valuable when you need to work with structured data for analysis, reporting, or further processing.

However, it’s important to note that this approach might not be the most efficient for handling large datasets. In such cases, consider alternative methods or preprocessing the data before storing it in the database.


Converting comma-separated values to rows in MySQL is a useful skill that can help you work with structured data more effectively. By utilizing the SUBSTRING_INDEX function and CROSS JOIN, you can transform the data into a more accessible format. Remember to evaluate the suitability of this approach based on your specific use case and dataset size.

By following the steps outlined in this article and understanding the provided examples, you’ll be well-equipped to tackle scenarios where comma-separated values need to be converted into rows in MySQL.

Leave a Reply

Your email address will not be published. Required fields are marked *