如何在SQL中通过条件分隔符将一列拆分为多列?

How to split a column into multiple columns by condition delimeter in SQL?

有人能帮帮我吗?

我有这个专栏

<br/>

John > Doe Doe > 作家<br/>

Jane > Doe > 化学工程师 > Sovena<br/>

我希望我的最终结果是

<br/>

约翰<br/>

<br/>

第 2 列<br/>

小母狗<br/>

母鹿<br/>

第 3 列<br/>

作家<br/>

化学工程师<br/>

第 4 列<br/>

(空)<br/>

索维纳<br/>

我在 SQL 中需要这个,用“>”分隔,你能帮忙吗? 谢谢!

这回答了问题的原始版本。

遗憾的是,内置的字符串拆分功能没有为组件提供索引。因此,一种解决方案是递归子查询:

with cte as (
      select id, convert(varchar(max), NULL) as str,
             convert(varchar(max), str) as rest, 0 as lev
      from t
      union all
      select id, left(rest, charindex(' > ', rest + ' > ') - 1),
             stuff(rest, 1, charindex(' > ', rest + ' > ') + 2, ''),
             lev + 1
      from cte
      where rest <> '' 
     )
select max(case when lev = 1 then str end),
       max(case when lev = 2 then str end),
       max(case when lev = 3 then str end),
       max(case when lev = 4 then str end)
from cte
group by id;

Here 是一个 db<>fiddle.