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

求助!这样的结果怎么实现?

aubblove 发布于 2007-08-22 16:58, 623 次点击

假如在SQL有一个这样的表:
a b
205 202001,204001,206001
302 301001,301002

现在要把它变成一个这样的表:
a b
205 202001
205 204001
205 206001
302 301001
302 301002

怎么实现?


谢谢了!!

5 回复
#2
Kendy1234562007-08-22 17:55

写一个存储过程来实现

先用游标逐行读出数据, 然后用一个循环: charindex 函数找到逗号,(只要能找到逗号就继续循环), 用substring读出逗号之前的数据 然后插入到新表
把游标遍历一次 就实现了

#3
xinzheng2007-08-22 18:13
以下是引用Kendy123456在2007-8-22 17:55:25的发言:

写一个存储过程来实现

先用游标逐行读出数据, 然后用一个循环: charindex 函数找到逗号,(只要能找到逗号就继续循环), 用substring读出逗号之前的数据 然后插入到新表
把游标遍历一次 就实现了

写出来啊,学习下,你这么说我还是不懂啊

#4
xinzheng2007-08-22 19:06

select top 8000 a=identity(int) into # from syscolumns a,syscolumns b

select a.a,b=substring(a.b,b.a,charindex(',',a.b+',',b.a)-b.a)
from bb a,# b
where len(a.b)>b.a
and substring(','+a.b,b.a,1)=','
and substring(a.b,b.a,1)<>','
order by a.a,b.a
drop table #
go

[此贴子已经被作者于2007-8-22 19:07:07编辑过]

#5
aubblove2007-08-23 08:29
以下是引用xinzheng在2007-8-22 19:06:35的发言:

select top 8000 a=identity(int) into # from syscolumns a,syscolumns b

select a.a,b=substring(a.b,b.a,charindex(',',a.b+',',b.a)-b.a)
from bb a,# b
where len(a.b)>b.a
and substring(','+a.b,b.a,1)=','
and substring(a.b,b.a,1)<>','
order by a.a,b.a
drop table #
go


楼上的大哥,这样就可以了吗,不要用游标吗?有点看不懂.能不能在指点一下,多谢

#6
aubblove2007-08-23 09:54
谢谢楼上大哥
以下是引用xinzheng在2007-8-22 19:06:35的发言:

select top 8000 a=identity(int) into # from syscolumns a,syscolumns b

select a.a,b=substring(a.b,b.a,charindex(',',a.b+',',b.a)-b.a)
from bb a,# b
where len(a.b)>b.a
and substring(','+a.b,b.a,1)=','
and substring(a.b,b.a,1)<>','
order by a.a,b.a
drop table #
go


楼上的大哥,谢谢你了,结果是正确的,只是有一点不懂,这里面没有用到循环语句,怎么实现循环的呢?
想交个朋友,我的QQ是:43937783,到深圳南山这边的话我请你们吃饭

1