Sql insertion de arrays en utilisant la fonction split

J'ai split fonction qui va supprimer le délimiteur d'un tableau et insert dans la table comme

insert into tbl_Temp (column) select Data from dbo.split('1,2',',') 

Il va tout insert très bien. Maintenant, je veux insert deux arrays dans deux colonnes comme

  Insert into tbl_Temp(column1,column2) ___(i don't know what to write)___ 

En utilisant la fonction dbo.split, de sorte que les valeurs de colonne respectives doivent être insérées dans la colonne1, colonne2 par le même ordre de arrays comme
('1,2', ',') ('a', 'b', ',')

mon Dbo.split est

  ALTER FUNCTION [dbo].[Split] ( @RowData nvarchar(MAX), @SplitOn nvarchar(5) ) RETURNS @ReturnValue TABLE (Data NVARCHAR(MAX)) AS BEGIN Declare @Counter int Set @Counter = 1 While (Charindex(@SplitOn,@RowData)>0) Begin Insert Into @ReturnValue (data) Select Data = lsortingm(rsortingm(Subssortingng(@RowData,1,Charindex(@SplitOn,@RowData)-1))) Set @RowData = Subssortingng(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData)) Set @Counter = @Counter + 1 End Insert Into @ReturnValue (data) Select Data = lsortingm(rsortingm(@RowData)) Return END 

Je ne comprends pas comment aller plus loin … ??

J'utilise la fonction suivante pour split datatables délimitées par des virgules:

 create function dbo.SplitWithId (@RowData nvarchar(MAX), @SplitOn char) returns table as return ( select subssortingng(@RowData, n, charindex(@SplitOn, @RowData + @SplitOn, n) - n) as col, row_number() over (order by n) as id from numbers where subssortingng(@SplitOn + @RowData, n, 1) = @SplitOn and n < len(@RowData) + 1 ) go 

C'est une fonction de table en ligne donc c'est plus rapide que multi-états. Il renvoie également une id les colonnes avec datatables. Vous avez besoin d'une table de nombres pour l'utiliser, mais la table de nombres est utile de plusieurs manières.

Avec cette fonction en place, votre insertion ressemblera à ceci:

 insert into tbl_Temp(column1,column2) select f1.col, f2.col from dbo.SplitWithId ('a,b,c,d', ',') f1 inner join dbo.SplitWithId ('e,f,g,h', ',') f2 on f1.id = f2.id