Ich hatte das gleiche Problem, aber mit Zeichenketten anstelle von ganzen Zahlen, und löste es, indem ich eine Split-Funktion verwendete (siehe unten stehender Code), die eine Tabellenvariable mit dem Listeninhalt zurückgibt. Passen Sie die Funktion an Ihre Zwecke an.
Beispiel, wie die Funktion aufgerufen wird
create table #t (Id int, Value varchar(64))
insert into #t (Id, Value)
select Id, Item
from dbo.fnSplit('24641978, 24641976, ... 24641972, 24641971', ',')
/*Machen Sie Ihre eigenen Sachen*/
drop table #t
Funktion
if object_id(N'dbo.fnSplit', N'TF') is not null
drop function dbo.fnSplit
GO
create function dbo.fnSplit(@string varchar(max), @delimiter char(1))
returns @temptable table (Id int, Item varchar(8000))
as
begin
-- Achtung! len() führt ein rtrim() durch (z.B. len('2 ') = 1)
if ( len( @string ) < 1 or @string is null ) return
declare @idx int
declare @slice varchar(8000)
declare @stringLength int
declare @counter int ; set @counter = 1
set @idx = charindex( @delimiter, @string )
while @idx!= 0
begin
set @slice = ltrim( rtrim( left(@string, @idx - 1)))
set @slice = replace( replace(@slice, char(10), ''), char(13), '')
insert into @temptable(Id, Item) values(@counter, @slice)
-- Um Leerzeichen am Ende zu behandeln, verwenden Sie datalength()
set @stringLength = datalength(@string)
set @string = right( @string, (@stringLength - @idx) )
set @idx = charindex( @delimiter, @string )
set @counter = @counter + 1
end
-- Was nach dem letzten Trennzeichen übrig bleibt
set @slice = ltrim(rtrim(@string))
set @slice = replace( replace(@slice, char(10), ''), char(13), '')
insert into @temptable(Id, Item) values(@counter, @slice)
return
end
GO