注册 登录
编程论坛 SQL Server论坛

表的处理问题

喜欢你没道理 发布于 2007-10-21 10:52, 792 次点击
表A(编号,参加人,...)
表B(编号,姓名,作者顺序)

如:A(101,张三 李四 王五,...)
如何生成:B(101,张三,1)
(101,李四,2)
(101,王五,3)
存储过程可以实现吗?或者其他办法
7 回复
#2
guoxhvip2007-10-22 01:13
可以实现
#3
喜欢你没道理2007-10-22 21:48

不会啊,请讨教

#4
喜欢你没道理2007-10-25 11:03

有人给写点具体的语句吗

#5
hnj2007-10-29 20:57
我也是初学的呀希望能了解到更多,给点例子,谢谢
#6
喜欢你没道理2007-11-15 10:53

请高手,斑竹指点啊

#7
purana2007-11-15 11:34

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

(所影响的行数为 3 行)
*/

#8
喜欢你没道理2007-11-16 09:26
我仔细研究阿,非常感谢斑竹
1