★★★★★求一个SQL语句或存储过程★★★★★

Refactoring 2002-11-19 05:36:07
问题描述如下:
表A

XH(序号) NR(内容)
1 a
2 b
3 c
4 d
5 e
6 f
现有数据t,x,z,w, 我怎么将数据依次插入到表A的某一序号后,比如说序号3后,并且使序号重排,插入后结果如下。
XH NR
1 a
2 b
3 c
4 t
5 x
6 z
7 w
8 d
9 e
10 f
如何做?请各位大侠赐教.谢谢
...全文
50 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCEO 2002-11-19
  • 打赏
  • 举报
回复
已测试!
CCEO 2002-11-19
  • 打赏
  • 举报
回复
表结构:
create table A(
xh int,
NR varchar(40)
)

自定义函数:
create function GetRecordsNo(@str varchar(2000),@BeginNo int)
returns @Rec table (No int,Record varchar(40))
as
begin
declare @s varchar(2000)
declare @r varchar(2000)
declare @i varchar(2000)
declare @No int
set @No=@BeginNo+1
set @s=@str
set @i=CHARINDEX(',',@s)
while @i>0
begin
set @r=left(@s,@i-1)
insert @Rec values (@No,@R)
set @No=@No+1
set @s=right(@s,len(@s)-@i)
set @i=CHARINDEX(',',@s)
end
if len(@s)>0
insert @Rec values (@No,@s)

return
end

GO


参数:
declare @BeginNo int
declare @Nr varchar(100)
set @BeginNo=3
set @Nr='t,x,z,w'

declare @i int
select @i=count(*) from dbo.GetRecordsNo(@Nr,@BeginNo)

update a
set xh=xh+@i
where xh>@BeginNo

insert a
select * from dbo.GetRecordsNo(@Nr,@BeginNo)

select * from a

看看结果!!

Refactoring 2002-11-19
  • 打赏
  • 举报
回复
有没有简捷快速的方法???
CCEO 2002-11-19
  • 打赏
  • 举报
回复
麻烦!
倒是不难!

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧