Skip to main content
TopMiniSite

Back to all posts

How to Split String Into Columns And Rows In Oracle?

Published on
5 min read
How to Split String Into Columns And Rows In Oracle? image

Best Tools to Split Strings in Oracle to Buy in October 2025

+
ONE MORE?

To split a string into columns and rows in Oracle, you can use the REGEXP_SUBSTR function along with the CONNECT BY clause. This allows you to extract substrings from the original string and display them as separate rows and columns.

First, you need to identify the pattern by which the string should be split. This can be a delimiter, such as a comma or a space. You can use the REGEXP_SUBSTR function to extract the substrings based on this pattern.

Next, you can use the CONNECT BY clause to generate multiple rows based on the number of substrings extracted. By using the LEVEL pseudocolumn in the CONNECT BY clause, you can generate a unique row number for each substring.

Finally, you can use a combination of Oracle SQL functions like SUBSTR, INSTR, and LENGTH to split the extracted substrings into separate columns.

Overall, by utilizing a combination of these Oracle SQL functions and clauses, you can effectively split a string into columns and rows in Oracle.

How to split a string into rows while preserving the original order in Oracle?

You can split a string into rows while preserving the original order in Oracle by using the CONNECT BY LEVEL clause along with the SUBSTR function. Here is an example query to achieve this:

WITH data AS ( SELECT 'Hello,World,How,Are,You,Today' AS string FROM dual ) SELECT SUBSTR(string, instr(string, ',', 1, LEVEL) + 1, instr(string, ',', 1, LEVEL + 1) - instr(string, ',', 1, LEVEL) - 1) AS split_string FROM data CONNECT BY LEVEL <= length(string) - length(replace(string, ',', '')) + 1;

In this query:

  • The WITH clause is used to define the input string that we want to split.
  • The CONNECT BY LEVEL clause generates a row for each comma-separated value in the input string.
  • The SUBSTR function extracts each comma-separated value based on its position in the string.
  • The instr function is used to determine the starting and ending positions of each comma-separated value.

Running this query will split the input string "Hello,World,How,Are,You,Today" into separate rows while preserving the original order.

How to split a string into multiple columns and rows in Oracle?

To split a string into multiple columns and rows in Oracle, you can use the SUBSTR and INSTR functions along with a recursive query. Here's a step-by-step guide on how to achieve this:

  1. Create a sample table with a column containing the string you want to split:

CREATE TABLE sample_table ( id NUMBER, string_column VARCHAR2(100) );

INSERT INTO sample_table VALUES (1, 'apple,banana,orange');

  1. Use a recursive query to split the string into multiple rows:

WITH split_strings AS ( SELECT id, string_column AS original_string, SUBSTR(string_column, 1, INSTR(string_column || ',', ',') - 1) AS string_value, SUBSTR(string_column, INSTR(string_column || ',', ',') + 1) AS remaining_string FROM sample_table WHERE string_column IS NOT NULL

UNION ALL

SELECT id,
       original\_string,
       SUBSTR(remaining\_string, 1, INSTR(remaining\_string || ',', ',') - 1),
       SUBSTR(remaining\_string, INSTR(remaining\_string || ',', ',') + 1)
FROM split\_strings
WHERE remaining\_string IS NOT NULL

) SELECT id, string_value FROM split_strings WHERE string_value IS NOT NULL;

This query uses recursion to split the original string into individual values and creates new rows for each value. Replace sample_table with the name of your table and string_column with the column that contains the string you want to split.

  1. Run the query and you will get the following output:

ID | STRING_VALUE

1 | apple 1 | banana 1 | orange

You have successfully split the string into multiple columns and rows in Oracle.

How to split a string by a specific delimiter in Oracle?

To split a string by a specific delimiter in Oracle, you can use the REGEXP_SUBSTR function in combination with regular expressions. Here is an example:

SELECT REGEXP_SUBSTR('apple,orange,banana', '[^,]+', 1, LEVEL) AS fruit FROM dual CONNECT BY REGEXP_SUBSTR('apple,orange,banana', '[^,]+', 1, LEVEL) IS NOT NULL;

In this example, the REGEXP_SUBSTR function is used to extract substrings from the input string 'apple,orange,banana' based on the delimiter ','. The regular expression '[^,]+' matches any sequence of characters that do not include the delimiter ','. The CONNECT BY clause is used to generate multiple rows with each substring as a separate value.

The output of the above query will be:

fruit

apple orange banana

What is the best method for splitting a string in Oracle?

The best method for splitting a string in Oracle is to use the REGEXP_SUBSTR function in conjunction with regular expressions. This function allows you to extract substrings based on a specified pattern.

Here is an example of how you can split a string using REGEXP_SUBSTR:

SELECT REGEXP_SUBSTR('Hello,World', '[^,]+', 1, LEVEL) AS split_string FROM DUAL CONNECT BY REGEXP_SUBSTR('Hello,World', '[^,]+', 1, LEVEL) IS NOT NULL;

In this example, the string 'Hello,World' is split by the comma and each substring is extracted using REGEXP_SUBSTR. The CONNECT BY clause is used to iterate over the substrings until there are no more left.

This method is efficient and versatile for splitting strings in Oracle.