SQL Server将整数变量添加到字符串的结尾

时间:2015-11-07 08:52:09

标签: sql-server

我想在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

2 个答案:

答案 0 :(得分:2)

@iint转换为varchar

喜欢这个

insert into AllowedStudents (GroupID, StudentNumber) 
values ('1', '9210410' + Convert(varchar(50), @i))

SQLFIDDLE

答案 1 :(得分:0)

这是因为SQL Server中的类型优先级。 Int数据类型的优先级高于varchar数据类型,导致varchar隐式转换为int类型。您需要将int变量显式转换为varchar数据类型。

可以使用castconvert函数完成此操作:

'9210410' + cast(@i as varchar(100))

'9210410' + convert(varchar(100), @i)

有关数据类型优先级的更多信息,请访问https://msdn.microsoft.com/en-us/library/ms190309.aspx