create table 表A( 编号 int, 参加人 varchar(4000) ) go create function dbo.f_GetName(@编号 int) returns @t table(id int,name varchar(20),num int) as begin declare @参加人 varchar(4000),@i int,@j int declare @temp varchar(20) select @参加人='',@j=0,@temp='' select @参加人=参加人 from 表A where 编号=@编号 set @i=charindex(' ',@参加人)+1 while @i>1 begin select @j=@j+1, @temp=left(@参加人,@i-1), @参加人=substring(@参加人,@i,4000), @i=charindex(' ',@参加人)+1 insert into @t values(@编号,@temp,@j) end if @参加人<> '' begin set @j=@j+1 insert into @t values(@编号,@参加人,@j) end return end go
insert into 表A values(101,'张三 李四 王五')
select * from dbo.f_GetName(101)
drop table 表A drop function f_GetName
/* id name num ----------- -------------------- ----------- 101 张三 1 101 李四 2 101 王五 3