2017-03-04 1 views
0

Ich habe einen Parameter mit Komma drin. Wie @parameter = 'abc,xyz,fgh' ich möchte es trennen mag:separate Komma-Strings in Parameter und speichern in Tabelle SQL

column1  column2 
1   abc 
1   xyz 
1   fgh 

habe ich einen Trigger, die einen Parameter @PackageCode mit Komma Werte genannt empfängt. Jetzt möchte ich seinen Wert trennen und in der Tabelle speichern.

Unten ist der SQLtrigger-Code, den ich bisher versucht habe.

CREATE TRIGGER CustomerPackageSplit ON BM_CustomerInfo 
FOR INSERT 
AS 
    declare @CustNIC int; 
    declare @CustID varchar(100); 
    declare @CustName decimal(10,2); 
    declare @PackageCode varchar(100); 

SELECT @CustNIC = i.CustNIC from inserted i; 
SELECT @CustID = i.CustID from inserted i; 
SELECT @CustName = i.CustName from inserted i; 
SELECT @PackageCode = i.Package from inserted i; 


INSERT INTO BM_CustPackage (CustNIC,CustID,CustName,PackageCode) 
VALUES (@CustNIC,@CustID,@CustName,@PackageCode) 

GO 
+1

Sie sollten die Aufteilung wirklich durchführen, bevor Sie die Daten in die Tabelle einfügen. Der Trigger hat auch einen schwerwiegenden Fehler, eingefügt (und gelöscht) kann mehr als eine Zeile enthalten. –

+0

Gibt es keine Methode, um es von SQL zu tun? –

Antwort

1

In SQL Server 2016 Sie string_split Funktion (weitere Informationen here) verwenden können.

Hier ist eine einfache Abfrage, die Ihre comma separated values ​​splittet:

declare @parameter varchar(100) 

set @parameter = 'abc,xyz,fgh' 

select 1 as column1, [value] as column2 
from string_split(@parameter, ',') 

Die Ausgabe dieses Befehls lautet:

╔═════════╦═════════╗ 
║ column1 ║ column2 ║ 
╠═════════╬═════════╣ 
║  1 ║ abc  ║ 
║  1 ║ xyz  ║ 
║  1 ║ fgh  ║ 
╚═════════╩═════════╝ 

Für ältere SQL Server-Version in vielen Implementierungen von Split finden Funktionen, zum Beispiel here, here oder here.

Verwandte Themen