
如何将SQL表中不连续编号重写为连续编号??
在SQLserver2000数据库中,有一个表中的一个字段为spbh(商品编号)原来其编号是连续的,后经删除等操作,其编号已不是连续的了,我想用SQL语句重写该字段的编号...
在SQL server2000数据库中,有一个表中的一个字段为spbh(商品编号)原来其编号是连续的,后经删除等操作,其编号已不是连续的了,我想用SQL语句重写该字段的编号为连续的编号,请问各位高手该如何与此SQL语句??本人万分感谢!!
我看到过有人用SQL语句将原spbh字段的内容删除后,又用SQL语句重写了这个字段,这个字段值的开头必须是以SPH打头后面是00000001、00000002……如:
SPH00000001 展开
我看到过有人用SQL语句将原spbh字段的内容删除后,又用SQL语句重写了这个字段,这个字段值的开头必须是以SPH打头后面是00000001、00000002……如:
SPH00000001 展开
3个回答
展开全部
只能先把spbh字段先删除,然后再重新创建一个identity类型的spbh字段,不过这样做的话,identity列就跑到表的最后边了。其实通过更新系统表,能改变identity列的位置,不过比较麻烦,搂主想了解的话可以提出来,我抽空再写出来。如果对列的位置不太要求的话就省事了:)
alter table 表
drop column spbh
go
alter table 表
add spbh int identity
go
-------------------------
你的表自增的字段是字符串,那一定是程序在插入的过程中自动增加的,如果表结构不能更改,那只能用游标来一条一条的更新了,数据量很大的话,效率很低的。
如果表结构可以变得,那我可以告诉你一种方法。
首先增加一个新的identity列,如果原来有的话,要先drop掉
--创建自增列newids
alter table 表
add newids identity
--将spbh字段删除
alter table 表
drop column spbh
--添加一个计算列spbh
alter table 表
add spbh as 'SPH'+right('00000000'+cast(newids as varchar(8)),8)
--也就是将spbh字段设置为计算列,这样它的值就是由newids这个字段来确定了。计算列的值就是SPH00000001这种形式了。
alter table 表
drop column spbh
go
alter table 表
add spbh int identity
go
-------------------------
你的表自增的字段是字符串,那一定是程序在插入的过程中自动增加的,如果表结构不能更改,那只能用游标来一条一条的更新了,数据量很大的话,效率很低的。
如果表结构可以变得,那我可以告诉你一种方法。
首先增加一个新的identity列,如果原来有的话,要先drop掉
--创建自增列newids
alter table 表
add newids identity
--将spbh字段删除
alter table 表
drop column spbh
--添加一个计算列spbh
alter table 表
add spbh as 'SPH'+right('00000000'+cast(newids as varchar(8)),8)
--也就是将spbh字段设置为计算列,这样它的值就是由newids这个字段来确定了。计算列的值就是SPH00000001这种形式了。
展开全部
在缓存状态下重新生成标识列
SET IDENTITY_INSERT Table1 ON
DECLARE @i int
Set @i = 0
Update 表1 Set @i = @i + 1,列1 = 'SPH'+right('00000000'+convert(varchar(8),@i),8)
SET IDENTITY_INSERT Table1 OFF
SET IDENTITY_INSERT Table1 ON
DECLARE @i int
Set @i = 0
Update 表1 Set @i = @i + 1,列1 = 'SPH'+right('00000000'+convert(varchar(8),@i),8)
SET IDENTITY_INSERT Table1 OFF
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比较麻烦
保险的情况下是做个存储过程 逐条改
保险的情况下是做个存储过程 逐条改
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询