2017-02-15 3 views
0

Ich versuche, eine gespeicherte Prozedur zu erstellen, die eine Zeichenfolge mit den Werten einer bestimmten Spalte erhält, die ich will und dann eine Zeile für jeden Wert, geteilt durch "," .Wie führe ich eine INSERT in SQL Server aus einer Zeichenfolge mit einer bestimmten Spalte

Zum Beispiel:

--The string I mentioned 
    @Objectid = '15, 21, 23, 53'. 
    --Then I wish to insert those values into a table like for instance 
    #Result(ID bigint, AppID bigint, ObjectID bigint) 

So wollte ich einen Einsatz auf dieser Tabelle durchzuführen, und stellen Sie die Werte jedes @Objectid auf eine andere Reihe von #result und auf der Spalte ObjektID, während Gleichzeitig füllte ich andere Spalten mit Werten, die ich in Variablen auf derselben gespeicherten Prozedur gespeichert habe. Gibt es eine Möglichkeit, dies zu tun? Und wenn ja, gibt es eine Möglichkeit, dies ohne die Verwendung eines Cursors zu tun?

+2

verwenden, um einen Tabellenwertparameter und Split in Code vor –

+1

proc vorbei Gibt es Möglichkeiten, in SQL einen String aufzuteilen (zB wenn durch ein Komma delimeted) - haben einen Blick auf [bestehende Q & A] (http://stackoverflow.com/search?q=%23sql-server+split+a+string). Es wäre jedoch viel besser, wenn Sie Ihre IDs vorher teilen können. Sie benötigen keinen 'CURSOR', müssen aber wahrscheinlich eine' WHILE'-Schleife verwenden, um die INSERT-Anweisung mehrmals auszuführen. Was ist Ihr Quellsystem (wie erhalten Sie die Liste der Ids)? – Serge

+1

Welche Version von SQL Server? Im Jahr 2016 gibt es die Funktion STRING_SPLIT, die Sie verwenden können – Kostis

Antwort

0
DECLARE @Objectid varchar(max); 
set @Objectid = '15, 21, 23, 53'; 
set @Objectid = Replace(@Objectid, ',', '.'); 

SELECT ParseName(@Objectid, 4) As ID , 
     ParseName(@Objectid, 3) As AppID , 
     ParseName(@Objectid, 2) As ObjectID, 
     ParseName(@Objectid, 1) As ObjectID2 
+0

Bitte Abfrage verwenden wie oben Beispiel –

+2

Bitte beachten Sie, dass dies ein Missbrauch der 'PARSENAME' Funktion ist und auch nicht erweiterbar auf mehr als 4 Elemente, so dass es keine allgemeine Lösung für das Problem ist. –

+0

Das löst mein Problem nicht und ist nicht das, wonach ich gesucht habe, danke, dass Sie es trotzdem versuchen –

Verwandte Themen