I have a dataset that has a string column as shown below:
StringCol |
---|
abcd_45dl/beta3,test |
a56d/beta_46ab |
I would like to split each fragment at every special character such as (/,-_^. etc). Currently I am using the following line but this only gives me the first fragment.
SUBSTRING(terms, 0, PATINDEX('%[-!?@#$%^&*()_ =<>.:;/|\]%', terms))
The desired output would like like this:
StringCol | StringPc |
---|---|
abcd_45dl/beta3,test | abcd |
abcd_45dl/beta3,test | 45dl |
abcd_45dl/beta3,test | beta3 |
abcd_45dl/beta3,test | test |
a56d/beta_46ab | a56d |
a56d/beta_46ab | beta |
a56d/beta_46ab | 46ab |
CodePudding user response:
If you're using SQL Server 2017 it provides translate that can help here combined with string_split:
with sample as (
select 'abcd_45dl/beta3,test' StringCol union all
select 'a56d/beta_46ab'
)
select *
from sample
cross apply String_Split(Translate(StringCol,'_/',',,'),',')