私は列が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に戻って先頭のゼロを追加します私のC#プログラムでは長さが6(すべてのclnumは常に6桁です)で、それを表示します。しかし、先行ゼロを取り除いてから追加する方法はありますか?
計算された列をテーブルに追加して、 'clnum'の整数値を提供することを検討しましたか?永続化および索引付けが可能です。 – HABO
テーブルは私たちの会計システムの一部です。私はそれをすることは許されません。さもなければ、それはすばらしい考えです、ありがとう。 – Melanie