Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So konvertieren Sie eine Liste von Zahlen in eine (temporäre) Tabelle mit SQL (SQL Server)

Eine Lösung, die ich oft benutze...

Geben Sie Ihre Zahlenliste als VARCHAR(MAX) an kommagetrennte Zeichenfolge, dann verwenden Sie eine der vielen dbo.fn_split() Funktionen, die Leute online geschrieben haben.

Einer von vielen Beispiele online... SQL-benutzerdefinierte-Funktion-zum-Parsen-einer-begrenzten-Str

Diese Funktionen nehmen einen String als Parameter und geben eine Tabelle zurück.

Dann können Sie Dinge tun wie...

INSERT INTO @temp SELECT * FROM dbo.split(@myList)

SELECT
  *
FROM
  myTable
INNER JOIN
  dbo.split(@myList) AS list
    ON list.id = myTable.id


Eine Alternative besteht darin, sich Tabellenwertparameter anzusehen. Damit können Sie eine ganze Tabelle als Parameter an eine gespeicherte Prozedur übergeben. Wie, hängt von dem Framework ab, das Sie verwenden. Arbeiten Sie mit .NET, Java, Ruby usw. und wie kommunizieren Sie mit der Datenbank?

Sobald wir mehr Details über Ihren Anwendungscode wissen, können wir Ihnen sowohl den Client-Code als auch die Vorlage für gespeicherte SQL-Prozeduren zur Verwendung von Tabellenwertparametern zeigen.