'Einfügen in' mit Array

8

Ich frage mich, ob es eine Möglichkeit gibt, "into in" in eine Liste von Werten zu verwenden. Ich versuche das zu tun:

%Vor%

Also, was ich sagen will ist, dass value2 ein Array von Strings sein wird. Ich werde dies in C # setzen, aber die SQL-Anweisung ist alles was ich wirklich brauche. Ich weiß, ich könnte nur eine foreach und Schleife durch meine Array, aber ich dachte, es könnte eine bessere Möglichkeit wie die SELECT-Anweisung hier: SQL SELECT * FROM XXX WHERE Spaltenname in Array . Es scheint, als wäre eine einzelne Abfrage viel effizienter als eine einzige Abfrage.

Ich verwende SQL Server 2008 R2. Danke, Jungs!

    
snickered 18.01.2011, 03:07
quelle

3 Antworten

4

Sie können diesen Typ von insert-Anweisung verwenden

%Vor%

Der 'Wert' , 'value3' und ' abc, def, ghi, jkl' sind die 3 varchar-Parameter, die Sie benötigen in C # SQLCommand festgelegt.

Dies ist die unterstützende Funktion, die benötigt wird.

%Vor%

Die verwendeten Parameter sind:

  1. ',' = Trennzeichen
  2. -1 = alle Werte im Array oder N nur für die ersten N Elemente

Lösung ist oben, Alternativen unten

Oder, wenn Sie Lust haben, ein reiner CTE-Ansatz, der nicht durch eine Split-Funktion unterstützt wird (sehen Sie Kommentare mit & lt; & lt; & lt;)

%Vor%

XML-Ansatz

%Vor%

In C # -Code würden Sie nur 4 Zeilen verwenden, die mit "insert tblMyTable ..." beginnen und die Variable @xmlstr parametrieren.

    
RichardTheKiwi 18.01.2011, 03:11
quelle
3

Da Sie SQL 2008 und C # verwenden, verwenden Sie am besten einen Tabellenwert < und schließe dich dann daran an.

Dies ist besser als die Übergabe einer durch Kommas getrennten Zeichenfolge, da Sie sich in Ihren Werten nicht um Anführungszeichen und Kommas kümmern müssen.

aktualisieren Eine andere Möglichkeit ist, den XML-Datentyp zu verwenden.

Pre-SQL 2005 Eine weitere Option besteht darin, eine XML-Zeichenfolge zu übergeben und OPENXML zu verwenden. Wenn Sie einen XMLWriter zum Erstellen Ihrer Zeichenfolge verwenden, wird sichergestellt, dass Ihre XML-Datei gültig ist

    
Conrad Frix 18.01.2011 03:28
quelle
1
%Vor%     
Jeremy Pridemore 18.01.2011 03:32
quelle

Tags und Links