komma gescheiden string als waarde in niewue records

Status
Niet open voor verdere reacties.

manueld

Gebruiker
Lid geworden
12 feb 2012
Berichten
216
ik heb vanuit een vba omgeving een listbox die uiteindelijk een kommagescheiden string opleverd welke ik in een sql code kan plakken. ik wil graag uit deze string meerdere records creeren.

de string is bv (23,67,40) wat betekend dat ik 3 records wil toevoegen waarbij een veldwaarde een van de drie waarden uit de string moet zijn


wat ik wil is een insert into query

INSERT INTO xxx
([ID]
,[Request]
,[Employee]
,[Readdate])
select (waarde1,waarde2,(stringwaarde),waarde3)

waarbij de stringwaarde dus meerdere waarde kent dus meerdere records produceerd.

hoe kan ik dit doen
 
als je eerst de haakjes van je strink afstript
en als je het .split(",") commando gebruikt, veranderd dit je string in een array
deze array kun je langs gaan met een for each en dan 3 sql commandos laten genereren en die loslaten op je sqlcommander

Niet duidelijk? (dit is grote lijnen werk...)
vraag dan om meer details.....
 
ik heb uiteindelijk de volgende code op internet gevonden

Code:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[CSVToTable] ( @StringInput VARCHAR(8000), @Delimiter nvarchar(1))
RETURNS @OutputTable TABLE ( [String] VARCHAR(10) )
AS
BEGIN

    DECLARE @String    VARCHAR(10)

    WHILE LEN(@StringInput) > 0
    BEGIN
        SET @String      = LEFT(@StringInput, 
                                ISNULL(NULLIF(CHARINDEX(@Delimiter, @StringInput) - 1, -1),
                                LEN(@StringInput)))
        SET @StringInput = SUBSTRING(@StringInput,
                                     ISNULL(NULLIF(CHARINDEX(@Delimiter, @StringInput), 0),
                                     LEN(@StringInput)) + 1, LEN(@StringInput))

        INSERT INTO @OutputTable ( [String] )
        VALUES ( @String )
    END

    RETURN
END

deze heb ik als funktie op de sql server opgeslagen en die roep ik aan via

Code:
SELECT * FROM CSVToTable ('(1,2,3,4,5,)',',')

deze genereerd een resultaat in de vorm van een tabel waar de waarde die tussen de haakjes staan elk een aappart record oplevert.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan