我必须将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'附近的语法不正确。
任何人都可以建议我哪里出错了吗?
答案 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)