SQL 中 超简单的模拟split

来源:互联网 发布:淘宝模特余露微博 编辑:程序博客网 时间:2024/05/18 18:04
--> 测试数据: #T
if object_id('tempdb.dbo.#T')is not null drop table#T
create table #T (id int,namevarchar(8))
insert into #T
select 1,'jame,job' unionall
select 2,'paul,mc' unionall
select 3,'carl';
--> 1. CTE 递归找分隔字符位置法:速度极快
with T (id,P1,P2) as
(
    selectid,charindex(',',','+name),charindex(',',name+',')+1from #T
    unionall
    selecta.id,b.P2,charindex(',',name+',',b.P2)+1from #T a join T b ona.id=b.id where charindex(',',name+',',b.P2)>0
)
select a.id,name=substring(a.name+',',b.P1,b.P2 - b.P1 - 1) from #T a join T b on a.id=b.id orderby 1
原创粉丝点击