如何在sql中按条件delimeter将一列拆分为多列?

bq9c1y66  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(330)

有人能帮我吗?
我有这个专栏
<br/> 约翰>无名氏>作家 <br/> 简>能源部>化学工程师>索韦纳 <br/> 我希望我的最终结果是
<br/> 厕所 <br/><br/> 第2栏 <br/> 多伊多伊 <br/> 雌鹿 <br/> 第3栏 <br/> 作家 <br/> 化学工程师 <br/> 第4栏 <br/> (空) <br/> 索韦纳 <br/> 我需要sql中的这个,按“>”拆分,你能帮忙吗?谢谢!

deyfvvtc

deyfvvtc1#

这回答了问题的原始版本。
不幸的是,内置的字符串拆分功能没有为组件提供索引。因此,一种解决方案是递归子查询:

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;

这是一把小提琴。

相关问题