要解決這樣的問題,可以使用SQL Server中的EXCEPT指令。
我們可以先建立一組連續號碼的資料,再用這個資料,利用EXCEPT指令與真實的資料表進行比對後取得不存在於真實資料表的資料,即為「跳號資料」。看一下以下的範例:
- 建立一個資料表,模擬真實環境的取號資料表

- 填入DEMO 用資料

- 先來檢視一下產生的資料
結果是:--檢視資料產生結果
SELECT * FROM dbo.TxSN

- 撰寫下列程式碼,取得跳號資料
DECLARE @t TABLE(txid INT)
DECLARE @max INT, @min INT
--找出最小與最大編號
SET @min = (SELECT MIN(TxId) FROM dbo.TxSN)
SET @max = (SELECT MAX(TxId) FROM dbo.TxSN)
WHILE @min <= @max
BEGININSERT INTO @t( txid )
VALUES ( @min -- txid - int
)
SET @min = @min + 1
END--使用 EXCEPT 找出不連續編號SELECT txid FROM @t EXCEPT
SELECT TxId FROM dbo.TxSN
SET NOCOUNT OFF
- 執行後結果如下:

這樣就可以快速的取得跳號資料囉
0 意見:
張貼意見