2015-11-07 1 views
0

Я хочу, чтобы генерировать некоторые целые числа в цикле 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

Преобразование @i из int до varchar

Как это

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

SQLFIDDLE

+0

он работал ... спасибо –

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

+0

этот ответ работал тоже ... спасибо –

Смежные вопросы