求一SQL语句。更新一个字段值为一个固定位数的顺序编号。

时间:2022-01-19 15:12:58
如何在SQL中用命令给某数据库的某字段重新生成一个6位数的序号?比如000001这样一直累加下去,比如最后一个是000456这样,怎么用SQL命令语句呢??我看过这里的一些帖子,但是都只是说顺序生成编号,并没有提到固定位数的,都是1、2、3这样下去,跟我想像的都不一样!

11 个解决方案

#1


--添加临时列
alter table 表 add id int identity
go

--更新
update 表
set 序号字段=right(convert(varchar,1000000+id),6)

--删除临时列
alter table 表 drop column id

#2


vivianfdlpw() 说的也是个办法,但是和我想像的还是不一样,我要求的是第一位是0,不是其他数字,如果是其他数字就很好办了,就是要求第一位必须是000001,这个该怎么办呢?

#3


一楼不是把数值转成字符再右取六位嘛
就是0打头啊

#4


原始方法,游标循环,i=i+1,左边+00000,取right6位,cast to varchar,再update column

#5


declare @i int
select @i=0
update 表
set @i=@i+1,
    字段=right('000000'+convert(varchar,@i),6)

#6


这个方法在这里使用的也不在少数了.
特殊的排名或者其他设置的时候都比较有用的.

#7


set nocount on
declare @tb table(id int identity(1,1),name char(10),OrderSn char(10))
insert into @tb (name) values ('a')
insert into @tb (name) values ('b')
insert into @tb (name) values ('c')
insert into @tb (name) values ('d')
insert into @tb (name) values ('e')
insert into @tb (name) values ('f')
insert into @tb (name) values ('g')
insert into @tb (name) values ('h')
insert into @tb (name) values ('i')
insert into @tb (name) values ('j')
insert into @tb (name) values ('k')
insert into @tb (name) values ('l')
insert into @tb (name) values ('m')
update @tb set OrderSn=right(cast((1000000 + id) as varchar),6)
select * from @tb

/*
id          name       OrderSn    
----------- ---------- ---------- 
1           a          000001    
2           b          000002    
3           c          000003    
4           d          000004    
5           e          000005    
6           f          000006    
7           g          000007    
8           h          000008    
9           i          000009    
10          j          000010    
11          k          000011    
12          l          000012    
13          m          000013 
*/

#8


--同样采用添加临时列
alter table 表 add id int identity
go

--更新
update 表
set 序号字段=replicate('0',6-len(id))+cast(id as varchar(6))
--删除临时列
alter table 表 drop column id

#9


高见,高见!

#10


1。update 表
set 序号字段=replicate('0',6-len(id))+cast(id as varchar(6))
2。update 表
set 序号字段=right(convert(varchar,1000000+id),6)

#11


都是高见恍然大悟,非常感谢大家,已经搞定了,不过就我个人意见rivery(river)的方法比较简单易懂,我就采纳这个方法了,谢谢!!!

#1


--添加临时列
alter table 表 add id int identity
go

--更新
update 表
set 序号字段=right(convert(varchar,1000000+id),6)

--删除临时列
alter table 表 drop column id

#2


vivianfdlpw() 说的也是个办法,但是和我想像的还是不一样,我要求的是第一位是0,不是其他数字,如果是其他数字就很好办了,就是要求第一位必须是000001,这个该怎么办呢?

#3


一楼不是把数值转成字符再右取六位嘛
就是0打头啊

#4


原始方法,游标循环,i=i+1,左边+00000,取right6位,cast to varchar,再update column

#5


declare @i int
select @i=0
update 表
set @i=@i+1,
    字段=right('000000'+convert(varchar,@i),6)

#6


这个方法在这里使用的也不在少数了.
特殊的排名或者其他设置的时候都比较有用的.

#7


set nocount on
declare @tb table(id int identity(1,1),name char(10),OrderSn char(10))
insert into @tb (name) values ('a')
insert into @tb (name) values ('b')
insert into @tb (name) values ('c')
insert into @tb (name) values ('d')
insert into @tb (name) values ('e')
insert into @tb (name) values ('f')
insert into @tb (name) values ('g')
insert into @tb (name) values ('h')
insert into @tb (name) values ('i')
insert into @tb (name) values ('j')
insert into @tb (name) values ('k')
insert into @tb (name) values ('l')
insert into @tb (name) values ('m')
update @tb set OrderSn=right(cast((1000000 + id) as varchar),6)
select * from @tb

/*
id          name       OrderSn    
----------- ---------- ---------- 
1           a          000001    
2           b          000002    
3           c          000003    
4           d          000004    
5           e          000005    
6           f          000006    
7           g          000007    
8           h          000008    
9           i          000009    
10          j          000010    
11          k          000011    
12          l          000012    
13          m          000013 
*/

#8


--同样采用添加临时列
alter table 表 add id int identity
go

--更新
update 表
set 序号字段=replicate('0',6-len(id))+cast(id as varchar(6))
--删除临时列
alter table 表 drop column id

#9


高见,高见!

#10


1。update 表
set 序号字段=replicate('0',6-len(id))+cast(id as varchar(6))
2。update 表
set 序号字段=right(convert(varchar,1000000+id),6)

#11


都是高见恍然大悟,非常感谢大家,已经搞定了,不过就我个人意见rivery(river)的方法比较简单易懂,我就采纳这个方法了,谢谢!!!