Ich möchte eine Reihe von Daten in eine einzige Zeichenfolge auszuwählen, aber ich will noch jedes Element in einer eigenen Zeile (ich stecke es in Crystal Reports, und es wird dann schneller sein als Tonnen subreports verwenden.)SQL Server - Wie koaleszieren Sie eine Zeichenfolge und fügen Sie Zeilenumbrüche hinzu?
Also, ich habe folgende Daten:
ID Assessor
1 Black
1 Jones
und ich mag es abzufragen, und eine einzelne Zeichenfolge zurück, die wie folgt aussieht:
Black
Jones
wenn ich coalesce mit einem select tun, kann ich Es wird durch Komma oder Semikolon getrennt, aber nicht durch Zeilenvorschub begrenzt:
BEGIN
declare @Assessors NVarChar(max)
Declare @LineFeed varchar(10)
DECLARE @Return varchar(10)
Set @LineFeed = char(10)
SET @Return = char(13)
Select @Assessors = COALESCE(@Assessors + ', ', '') + a.Assessor
FROM dbo.Assessment a
Where (@ID = a.ID)
Return @Assessors
END
dass die Funktion 'Black, Jones' zurückgibt. Aber wenn ich die Linie zu
Select @Assessors = COALESCE(@Assessors + @Return + @LineFeed, '') + a.Assessor
ändern kehrt ‚Black Jones‘ - es ist nicht in einem Zeilenvorschub oder Rückkehr gesetzt hat, nur einen Raum.
Ich denke, ich muss Coalesce nicht verwenden, aber ich habe versucht, nur Standard-Verkettung, und das wird es auch nicht setzen. Ich habe das jetzt in einer Funktion, aber ich plane es als Teil einer gespeicherten Prozedur, also ist es schneller.
+1. Das erinnert mich an die alten Zeiten der VB-String-Manipulation :-) –