如何在 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)
我必须将 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)