如何在sql server中添加varchar和integer

时间:2015-02-19 13:09:50

标签: sql-server sql-server-2008

我必须将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       '@LIPRequestIDstring'附近的语法不正确。

任何人都可以建议我哪里出错了吗?

5 个答案:

答案 0 :(得分:0)

Parenthesis函数中缺少

cast,其他内容看起来不错

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

答案 1 :(得分:0)

不是将字符串文字00000000与您应该使用的ID RIGHT连接起来:

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)

答案 2 :(得分:0)

而不是

CAST(@LIPRequestID AS VARCHAR(10)

使用

CAST(@LIPRequestID AS VARCHAR(10))

答案 3 :(得分:0)

我们可以使用 REPLACE 功能代替 RIGHT 功能。这有助于您实现两个要求。 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

答案 4 :(得分:0)

是的,由于sql和stackoverflow,正确的功能真的很有用。

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