webForumDet fria alternativet

SP insert av kommaseparerad sträng

1 svar · 204 visningar · startad av Brimba

BrimbaMedlem sedan dec. 19995 875 inlägg
#1

Hej!

Om jag har en sträng "1,2,11,23" och vill sätta in det i en tabell, hur gör jag då?

Alltså ovanstående sträng skall resultera i 4 nya poster, och inte en ny post.

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Finns inga bra färdiga funktioner så vitt jag vet.

declare @csv varchar(40)
declare @i,@s,@l int
declare @v int

set @i = 0
set @s = 1
set @l = len(@csv)
while @i < len(@csv)
begin
    set @i = @i + 1
    if  substring(@csv,@i,1) = ','
    or @i = @l
    begin
          if  @i = @l 
              set @v = cast(substring(@csv,@s,@i-@s + 1) as int)
          else 
              set @v = cast(substring(@csv,@s,@i-@s) as int)
          insert into t values(@v)
          set @s = @i + 1
   end 
end

Eftersom det är otestat så kan det säkert finnas något fel-
T.ex. att det skall vara +1 eller -1 i substring

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)