使用OUTER APPLY将列内容根据逗号分隔,拆分成列表

 创建临时数据

with m as (
    select '数字'TypeGroup,'1,2,3,4,5,6,7,8,9' info union all
    select '字母' TypeGroup,'a,b,c,d,e,f,g,h,i' info
)select * into #temp from m

查询临时数据

select * from #temp

 

 使用 OUTER APPLY将列内容根据逗号分隔,拆分成列表

SELECT A.TypeGroup,B.info
FROM(  
    select TypeGroup, CONVERT(xml,'<root><v>' + REPLACE(info, ',', '</v><v>') + '</v></root>')  as info
    from #temp(nolock)
)A  
OUTER APPLY(
    SELECT info = N.c.value('.', 'varchar(8000)')
    FROM A.info.nodes('/root/v') N(c)
)B

drop table #temp

 

posted @ 2021-09-01 18:43  小杨观世界  阅读(57)  评论(0编辑  收藏  举报