T-SQL与字符串的差距

时间:2017-02-21 17:52:29

标签: sql-server tsql

我有一个带有列clnum的数据库表,即varchar。它是数字,但可以包含前导零。给定用户在C#.Net程序中输入数字X,我需要确定表中不存在的下一个数字并将其显示给用户。这是SQL Server 2008.我能做的是剥离任何前导零,将结果数传递给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

然后我会在我的C#程序中将前导零添加回prev,使其长度为6(所有clnums总是6位数)并显示它。但有没有办法绕过前导零点然后再添加它们?

1 个答案:

答案 0 :(得分:1)

在转换为int之前,您不需要去除前导零,这将在转换过程中自动发生。

使用SQL,您可以使用<script> $.get("item.txt", function(data) { }); </script>

轻松添加它们

唯一真正的替代方法是将值作为字符串存储在表中,这样就不会丢失零。