] 前提:自動編號為18位,前4位是年份,中間10位是***x,最後四位是0001-9999的自動編號。
問題:某天發現2023年自動編號後四位從0001-0081後變為7328-8530,出現編號錯亂問題(原因未知待查)。但資料需要馬上批量重置,否則後續編號將繼續錯誤。
方案:擷取2023年份的前14位拼接後4位正確自動編號。實現如下:
--查詢2023年我司專案編號,檢視後四位是否正確
select myprojectno,substring(myprojectno,15,4) from dbo.projectt where myprojectno like
'2016%
'order
bysubstring(myprojectno,15,4)--
查詢正確編號
select myprojectno as
'錯編號
',substring(myprojectno,15,4) as
'錯編號後四位
',left(myprojectno,14) as
'對編號前14位',
right('
0000'+
cast(row_number() over (order
bysubstring(myprojectno,15,4)) as
varchar(5)),4) as
'對編號後四位',
(left(myprojectno,14)+right('
0000'+
cast(row_number() over (order
bysubstring(myprojectno,15,4)) as
varchar(5)),4)) as
'對編號
'from
dbo.projectt
where myprojectno like
'2016%
'order
bysubstring(myprojectno,15,4)--
更新錯誤編號為正確(批量指令碼)
select
'update dbo.projectt set myprojectno=
'''+
(left(myprojectno,14)+right('
0000'+
cast(row_number() over (order
bysubstring(myprojectno,15,4)) as
varchar(5)),4))+
'''where myprojectno=
'''+myprojectno+
''''
from
dbo.projectt
where myprojectno like
'2016%
'order
bysubstring(myprojectno,15,4)
執行(批量指令碼)實現資料重置。
SQL 自動編號處理
關閉自動編號 setidentity insert t off 這個時候就允許插入id值了 insert into t id,name values 0,test 開啟自動編號 setidentity insert t on 這個時候就允許插入id值了 insert into t id,name v...
sql 複製含自動編號的表
通常情況下,我們可以直接通過如下語句來複製表 insert into mytb select from mydb.dbo.mytb 如果資料表中帶有自動編號的列,則出現 訊息 8101,級別 16,狀態 1,第 1 行 僅當使用了列列表並且 identity insert 為 on 時,才能為表 m...
SQL 主鍵 自動編號 主鍵自增
1.新建一資料表,裡面有欄位id,將id設為為主鍵 如下 create table tb id int,constraint pkid primary key id create table tb id int primary key 2.新建一資料表,裡面有欄位id,將id設為主鍵且自動編號 如下...