我有一個帶有列clnum的數據庫表,它是varchar。它是數字,但可以包含前導零。給定用戶在C#.Net程序中輸入數字X,我需要確定表中不存在的下一個數字,並將其顯示給用戶。這是SQL Server 2008中有什麼我能做的就是去掉所有前導零,通過所產生的數量的T-SQL存儲過程,而做到這一點:帶字符串的T-SQL間隙
CREATE PROCEDURE [dbo].[getNextClientNum]
@ModelNumber AS int
AS
;WITH UsedNumbers (clnum, clname1)
AS
(
SELECT clnum, clname1
FROM QueuedClientMatters
),
OrderedNumbers (clnum, clnum_int, clname1)
AS
(
SELECT TOP 500000 clnum, CAST(clnum AS int) AS clnum_int, clname1
FROM UsedNumbers
WHERE CAST(clnum AS int) > @ModelNumber
ORDER BY clnum
)
SELECT TOP 1 previd
FROM (SELECT clnum_int, LAG(clnum_int) OVER (ORDER BY clnum) previd
FROM OrderedNumbers) q
WHERE previd <> clnum_int - 1
ORDER BY clnum_int
我會再加入前導零回previd如此它的長度是6(所有clnums總是6位數)在我的C#程序中顯示出來。但是,有沒有辦法繞開前面的零,然後再添加回來?
您是否考慮過在表中添加計算列以提供'clnum'的整數值?它可以被保存並編入索引。 – HABO
該表是我們會計系統的一部分,我不會這樣做。否則,這將是一個好主意,謝謝。 – Melanie