Extract a string using regex_substr

0

I have a code written in DB2 that will extract the string values between / to different columns.

REGEXP_SUBSTR(RIGHT(TRIM('/BJ/1/10/114/201010049'),LENGTH(TRIM('/BJ/1/10/114/201010049'))-4),'^(.*?)/',1,1),LENGTH(REGEXP_SUBSTR(RIGHT(TRIM('/BJ/1/10/114/201010049'),LENGTH(TRIM('/BJ/1/10/114/201010049'))-4),'^(.*?)/',1,1))

From above code, the string after '/BJ/' will go to column_1, the value after '1/' will go to column_2 etc as below: Column_1 = 1, column_2 = 10, column_3 = 114, column_4 = 202010049. Now I am trying to do the same in redshift. but I am getting below error:

error: Invalid preceding regular expression prior to repetition operator. The error occurred while parsing the regular expression: '^(.*?>>>HERE>>>)/'

Can anyone please help me to fix this?

Joe
已提問 3 個月前檢視次數 179 次
1 個回答
2
已接受的答案

Hello Joe,

You can try using the split_part string function as below

select params, split_part(params, '/', 3) as col1, split_part(params, '/', 4) as col3, split_part(params, '/', 5) as col3, split_part(params, '/', 6) as col4 from ( select '/BJ/1/10/114/201010049' as params ) tmp

Please feel free to comment if you have further issues

AWS
專家
已回答 3 個月前
profile picture
專家
已審閱 2 個月前
  • Thanks a lot. This works fine.

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南