2017-10-06 11 views
0

Je me demandais s'il y avait un moyen d'insérer des données dans une table comme ceci.Insérer des données dans une manière dynamique Tabla

Nous suposse que nous avons ces données

array = ["hola","que","tal",""] 
array2 = ["saludos","amigos","",""] 
array3 = ["hi","friends","","","","Bye"] 

Je veux insérer ce par SP dans un tabla dans Sql Server

la structure de la table pourrait être comme ça.

field1 | field2 | field3 | field 4 | field 5 | field6 | ...... | fieldn 

Comment puis-je insérer ces données dans ce tableau, en gardant l'esprit que le num de champs sont dynamiques, ce changement dans tous les tableaux.

En avance merci pour toute suggestion et aide.

+0

La table doit être une certaine colonne dans une base de données ou essayez-vous d'enregistrer ces données dans la table temporaire. donne moi plus de clarté. Array liste vous pouvez passer le format de chaîne, puis le diviser en proc –

+0

@PrashantBamania Merci pour vous répondre bientôt, eh bien c'est une table dans ma base de données, tous les champs sont varchar. L'idée est que si j'essaie d'insérer des champs x, insérez ceux dans les premières colonnes. –

Répondre

0

Si vous avez un nombre maximum de colonnes/positions, il n'y a pas besoin d'aller dynamc

Je dois ajouter, si vos chaînes de source sont dans une table, cela est facilement migrées dans un CROSS APPLY

Exemple

DECLARE @S VARCHAR(MAX); 
SET @S='["hi","friends","","","","Bye"]' 


Select Pos1 = xDim.value('/x[1]','varchar(max)') 
     ,Pos2 = xDim.value('/x[2]','varchar(max)') 
     ,Pos3 = xDim.value('/x[3]','varchar(max)') 
     ,Pos4 = xDim.value('/x[4]','varchar(max)') 
     ,Pos5 = xDim.value('/x[5]','varchar(max)') 
     ,Pos6 = xDim.value('/x[6]','varchar(max)') 
     ,Pos7 = xDim.value('/x[7]','varchar(max)') 
     ,Pos8 = xDim.value('/x[8]','varchar(max)') 
From (Select Cast('<x>' + replace(replace(replace(replace(@S,'"]',''),'["',''),'"',''),',','</x><x>')+'</x>' as xml) as xDim) as A 

Retours

Pos1 Pos2 Pos3 Pos4 Pos5 Pos6 Pos7 Pos8 
hi  friends       Bye  NULL NULL 
+0

Merci pour votre réponse John, mais si j'envoie seulement 4 champs/Pos, comment est le comportement de cela. Continue de travailler? –

+0

@AndresClavijo Le reste serait NULL vaules –

+0

Ok, laissez-moi essayer et mal vous commenter l'avance. Merci encore. –