如何在 sql 服务器中添加 varchar 和 integer

How to add varchar and integer in sql server

我必须将 int 转换为 varchar,并且需要多考虑一件事。

例如:

1)我的字符串长度总是10个字符。 (即“0000000001”)

每当我生成新 ID 时,它都必须递增(即“0000000002”)
当它到达第 10 个字符串时将是“0000000010”,等等...
我不知道如何实现这个。 尝试作为第一步。

--Declared variable to increment count
declare @CTR INT
--@LIPRequestID is integer this is what i have to add to my 
declare @LIPRequestID int
select @LIPRequestID=0
declare @LIPRequestIDstring varchar(max)
select @ctr=0
WHILE @CTR<2
BEGIN
select @ctr=@ctr+1
select @LIPRequestID=@LIPRequestID+1

select @LIPRequestIDstring='00000000'+ CAST(@LIPRequestID AS VARCHAR(10)
print @LIPRequestIDstring
END

但它抛出以下异常错误:

Msg 102, Level 15, State 1, Line 14 Incorrect syntax near '@LIPRequestIDstring'.

谁能告诉我哪里出错了?

Parenthesis 缺少 cast 功能,其他看起来不错

select @LIPRequestIDstring='00000000'+ CAST(@LIPRequestID AS VARCHAR(10))--here

您应该使用 RIGHT:

而不是将字符串文字 00000000 与 ID 连接起来
DECLARE @LIPRequestIDstring varchar(10);
DECLARE @nextLIPRequestID int;
SET @nextLIPRequestID = (SELECT MAX(LIPRequestID) FROM dbo.TableName) + 1;
SET @LIPRequestIDstring = RIGHT('0000000000'+ CONVERT(VARCHAR(10),@nextLIPRequestID),10)

而不是

CAST(@LIPRequestID AS VARCHAR(10)

使用

CAST(@LIPRequestID AS VARCHAR(10))

代替RIGHT函数,我们可以使用REPLACE函数。这将帮助您实现您的两个要求。 ID的长度也可以作为参数传递 @IDLength.

DECLARE @CTR INT = 0
DECLARE @LIPRequestID INT = 0

DECLARE @IDLength INT = 8

DECLARE @LIPRequestIDstring VARCHAR(MAX)

WHILE (@CTR < 12)
    BEGIN
        SELECT @CTR += 1
        SELECT @LIPRequestID += 1
        PRINT  REPLACE(STR(@LIPRequestID, @IDLength), SPACE(1), '0')
    END

是的,正确的函数确实有意义,感谢 sql 和 Whosebug。

声明@LIPRequestIDstring varchar(max) select @LIPRequestID=@LIPRequestID+1 select @LIPRequestIDstring=RIGHT('0000000000'+ CONVERT(VARCHAR(10),@LIPRequestID),10)