Der folgende Code ist ein Ausgangspunkt zum Verketten mehrerer Spalten zu einer Zeichenfolge, wobei die Werte durch Kommas getrennt sind. Wenn der Spalt Eintrag leer oder NULL ist, sollte kein Komma verwendet werden:Verketten Sie mehrere Spalten als durch Komma getrennte Zeichenfolge
IF OBJECT_ID(N'tempdb..#Temp') IS NOT NULL
DROP TABLE #Temp;
CREATE TABLE #Temp
(
Id INT,
Name1 NVARCHAR(10) ,
Name2 NVARCHAR(10) ,
Name3 NVARCHAR(10)
);
INSERT INTO #Temp
SELECT 1,
N'Name1' ,
NULL ,
N'Name3'
UNION
SELECT 2,
N'Name1' ,
N'Name2' ,
N'Name3'
UNION
SELECT 3,
NULL ,
NULL ,
N'Name3'
UNION
SELECT
4,
N'' ,
N'' ,
N'Name3';
SELECT Id, STUFF(COALESCE(N',' + Name1, N'') + COALESCE(N',' + Name2, N'')
+ COALESCE(N',' + Name3, N''), 1, 1, '') AS ConcateStuff
FROM #Temp;
Die aktuellen Ergebnisse sind wie folgt:
Id ConcateStuff
1 Name1,Name3
2 Name1,Name2,Name3
3 Name3
4 ,,Name3
Alles gut funktioniert für NULL-Einträge, aber nicht für leere Einträge. Das Ergebnis der letzten Zeile sollte gerade sein:
Name3
Gibt es eine einfache Möglichkeit, dies ohne Verwendung von komplexen verschachtelten Case-Anweisungen zur Arbeit zu kommen (schließlich muß ich mehr als 3 Spalten verketten).
plus 1 für Beispieldaten – TheGameiswar