Wie bereits von anderen erwähnt, besteht eine Möglichkeit darin, das Array in eine Zeichenkette zu konvertieren und die Zeichenkette dann in SQL Server aufzuteilen.
Seit SQL Server 2016 gibt es eine eingebaute Methode zum Aufteilen von Strings, die
STRING_SPLIT()
Sie gibt eine Reihe von Zeilen zurück, die Sie in Ihre temporäre Tabelle (oder echte Tabelle) einfügen können.
DECLARE @str varchar(200)
SET @str = "123;456;789;246;22;33;44;55;66"
SELECT value FROM STRING_SPLIT(@str, ';')
ergeben würde:
value
-----
123
456
789
246
22
33
44
55
66
Wenn Sie etwas ausgefallener werden wollen:
DECLARE @tt TABLE (
thenumber int
)
DECLARE @str varchar(200)
SET @str = "123;456;789;246;22;33;44;55;66"
INSERT INTO @tt
SELECT value FROM STRING_SPLIT(@str, ';')
SELECT * FROM @tt
ORDER BY thenumber
würden Sie die gleichen Ergebnisse wie oben erhalten (außer dass der Spaltenname "thenumber" lautet), aber sortiert. Sie können die Tabellenvariable wie jede andere Tabelle verwenden, so dass Sie sie leicht mit anderen Tabellen in der DB verknüpfen können, wenn Sie wollen.
Beachten Sie, dass Ihre SQL Server-Installation auf Kompatibilitätsebene 130 oder höher sein muss, damit die STRING_SPLIT()
Funktion erkannt werden. Sie können Ihre Kompatibilitätsstufe mit der folgenden Abfrage überprüfen:
SELECT compatibility_level
FROM sys.databases WHERE name = 'yourdatabasename';
Die meisten Sprachen (einschließlich C#) haben eine "join"-Funktion, mit der Sie eine Zeichenkette aus einem Array erstellen können.
int[] myarray = {22, 33, 44};
string sqlparam = string.Join(";", myarray);
Dann passieren Sie sqlparam
als Parameter für die obige gespeicherte Prozedur.