Denna funktion använder jag mig av ofta för att konvertera en kommaseparerad sträng till en table för att göra en insert med.
Kod:
create FUNCTION [dbo].[StringList_To_Table] (@list nvarchar(MAX))
RETURNS @tbl TABLE (String nvarchar(max) NOT NULL, [Id] [int] IDENTITY(1,1) NOT NULL) AS
BEGIN
DECLARE @pos int,
@nextpos int,
@valuelen int
SELECT @pos = 0, @nextpos = 1
WHILE @nextpos > 0
BEGIN
SELECT @nextpos = charindex(',', @list, @pos + 1)
SELECT @valuelen = CASE WHEN @nextpos > 0
THEN @nextpos
ELSE len(@list) + 1
END - @pos - 1
INSERT @tbl (String)
VALUES (convert(nvarchar, substring(@list, @pos + 1, @valuelen)))
SELECT @pos = @nextpos
END
RETURN
END
Sen kan du använda dig av den så här:
Kod:
insert into table MyTable select String,Id from StringList_To_Table('hej,hopp,test')