我想在SQL Server循环中生成一些整数,并将其添加到长数字的字符串末尾
Declare @i int
Set @i = 10
While @i < 45
Begin
insert into AllowedStudents (GroupID, StudentNumber)
values ('1', '9210410' + @i)
SET @i = @i + 1
End
但是当插入过程结束时,我看到了这个结果:
28240 1 9210420
28241 1 9210421
28242 1 9210422
28243 1 9210423
针对
28240 1 921041020
28241 1 921041021
28242 1 921041022
28243 1 921041023
答案 0 :(得分:2)
将@i
从int
转换为varchar
喜欢这个
insert into AllowedStudents (GroupID, StudentNumber)
values ('1', '9210410' + Convert(varchar(50), @i))
答案 1 :(得分:0)
这是因为SQL Server中的类型优先级。 Int
数据类型的优先级高于varchar
数据类型,导致varchar
隐式转换为int
类型。您需要将int
变量显式转换为varchar
数据类型。
可以使用cast
或convert
函数完成此操作:
'9210410' + cast(@i as varchar(100))
或
'9210410' + convert(varchar(100), @i)
有关数据类型优先级的更多信息,请访问https://msdn.microsoft.com/en-us/library/ms190309.aspx