SQL批次指定某欄位的序號

SQL批次指定某欄位的序號

前言

同事問他從取號檔那取了起始號(PREFIX000123)取了99筆,最後號是(PREFIX000221),有個99筆的資料要指定這此號碼要如何下SQL呢?

實作

想說用INENTITY FIELD來試!

  • 先建立測試的#TABLE TABLE

--建立測試資訊
CREATE TABLE #T1
(
    C1 VARCHAR(30)
    ,C2 VARCHAR(30)
)
DECLARE @IDX INT
SET @IDX = 1 
--加入99筆資料
WHILE @IDX < 100
BEGIN
    INSERT #T1(C1, C2) VALUES('', 'C2' + STR(@IDX))
    SET @IDX = @IDX + 1
END
SELECT * FROM #T1
image 

 

  • 加入IDENTITY FIELD

--加入流水號欄位
ALTER TABLE #T1
    ADD C3 INT IDENTITY(1,1)
    
SELECT * FROM #T1
image
  • 開始更新序號到C1欄位

--設定起始流水號
DECLARE @START_SEQ VARCHAR(64)
SET @START_SEQ = 'PREFIX000123'
--開始整批設定流水號到C1欄位
UPDATE #T1
SET C1 = 'PREFIX' 
+ RIGHT('00000' + CAST(CAST(SUBSTRING(@START_SEQ, 7, 6) AS INT) + C3 - 1 AS VARCHAR), 6)
--最後的結果
SELECT * FROM #T1

 

image

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^