VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
123
返回列表 发新帖
楼主: kittast

求一SQL语句

[复制链接]

0

主题

93

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-6-21 19:00:02 | 显示全部楼层
to:sting0626 ( )
以下这一段是生成1—8000的递增的临时表,通过临时表取列的值,
同偶以上的第两种方法相同charindex(',',a.name+',',b.id)
这一段的b.id是从第几位开始查相有','的值的位置
SELECT TOP 8000 id = identity(int,1,1)
INTO # FROM syscolumns a, syscolumns b


回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-7-11 00:30:01 | 显示全部楼层
select top 1000 id=identity(int,1,1) into #t from sysobjects,syscolumns

create table tableA(id int,gid varchar(8000))
insert tableA select 3456,         '601988,600028,HK3988,HK0386'
insert tableA select 3457,         '601988,600028'

go

select b.id,gid=substring(','+b.gid+',',a.id+1,charindex(',',','+b.gid+',',a.id+1)-a.id-1)
from #t a,tableA b
where substring(','+b.gid+',',a.id,1)=',' and len(b.gid)>a.id
order by a.id


drop table tablea,#T

/*结果
id       gid
---------------
3456        601988
3457        601988
3457        600028
3456        600028
3456        HK3988
3456        HK0386

*/
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-7-11 06:30:01 | 显示全部楼层
建一临时表#t  用作交叉连接表tableA和定位“ ,”的位置
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-7-29 11:30:01 | 显示全部楼层
学习!~!
但是小弟又想到一个问题!
要是反过来可以吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表