Substring_index In Sql Explained With Examples

Mastering substring_index in SQL

When working with SQL databases, one of the most powerful functions you can use is substring_index. This function allows you to extract a substring from a string based on a delimiter. In this article, we will explore how to utilize this function effectively in your SQL queries.

The Basics of substring_index

The substring_index function in SQL takes three arguments: the string you want to extract from, the delimiter that separates the string, and the occurrence of the delimiter you want to use as the splitting point. For example, if you have a string “apple,banana,orange” and you want to extract the first two fruits, you can use the following query:

SELECT SUBSTRING_INDEX('apple,banana,orange', ',', 2);
-- Output: apple,banana

Using substring_index in WHERE clauses

One common use case for substring_index is in WHERE clauses to filter results based on a specific substring. For instance, if you have a table of products with a column containing categories separated by a delimiter, you can filter for products in a certain category like this:

SELECT * FROM products
WHERE SUBSTRING_INDEX(categories, ',', 1) = 'Electronics';

This query will retrieve all products that fall under the ‘Electronics’ category.

Advanced Techniques with substring_index in SQL

There are several advanced techniques you can employ with substring_index in SQL. One such technique is using it in conjunction with other functions to manipulate the extracted substring further. For example, you can combine substring_index with LENGTH and TRIM functions to clean up the extracted substring:

SELECT TRIM(LEADING ' ' FROM SUBSTRING_INDEX(' apple, banana, orange ', ',', 2));
-- Output: banana

In this query, we first extract the second element in the list and then remove any leading spaces from the extracted string.

Another advanced technique is using substring_index to split a string into multiple columns. This can be useful when you have a denormalized data structure and want to split it into separate columns for analysis:

  SUBSTRING_INDEX(details, '|', 1) AS detail1,
  SUBSTRING_INDEX(SUBSTRING_INDEX(details, '|', 2), '|', -1) AS detail2,
  SUBSTRING_INDEX(details, '|', -1) AS detail3
FROM products;

This query splits the ‘details’ column into three separate columns based on the ‘|’ delimiter.


In conclusion, substring_index is a versatile function in SQL that allows you to extract substrings based on delimiters. By mastering this function and combining it with other SQL functions, you can manipulate and analyze your data more effectively.