SPLIT_PART() entire column in redshift

How do I split_part an entire column(word-by-word)? I am trying to split the column "answer" into each word.

eg this is my dataset:

nameanswer
Katei love cheese
Tomi love bacon & eggs

this is what i want:

namesplit_answer
Katei
Katelove
Katecheese
Tomi
Tomlove
Tombacon
Tom&
Tomeggs

this is my query:

SELECT name, split_part(answer, ' ') AS split_asnwer FROM table

1 Answer

Split_part() can take 3 arguments - string, delimiter, and part number.

So you need to cross join with a numbers table that has all the integer values from 1 to the max number of parts in any string. You can generate this numbers table with a recursive CTE or some like to just have a numbers table on hand.

The query will look something like (untested and off the cuff):

with recursive nums(n) as ( select 1 as n union all select n + 1 from nums where n < (select max(LEN(answer) - LEN(REPLACE(answer, ' ', '')) + 1) from table)
)
select name, split_part(answer, ' ', n) AS split_answer
FROM table
cross join nums
where split_answer <> '';
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like