2009-05-04 10 views

Antwort

5

Sie können eine eingebettete 'set' Anweisung in einer Abfrage concatenate mit:

declare @combined varchar(2000) 
select @combined = isnull(@combined + ', ','') + isnull(value,'') 
from simpleTable 

print @combined

(Beachten Sie, dass die erste isnull() die Zeichenfolge initialisiert, und das zweite isnull() ist besonders wichtig, wenn in der Spalte 'value' die Möglichkeit besteht, dass Nullen vorhanden sind, da andernfalls eine einzige Null die gesamte Verkettung löschen könnte.

(edited Code und Erklärung nach Kommentaren)

+0

süß! Ich wusste nicht, dass du das tun kannst. Ich dachte immer, Set und select funktionierte genauso für die Zuordnung. –

+1

möchten Sie vielleicht "+ ISNULL (Wert, '')" machen, weil "+ Wert" einen Teil der Zeichenkette vor der Zeile mit dem Null-Wert –

+0

aufheben wird! Ich weiß nicht, wie ich das verpasst habe ... habe editiert. – codeulike

2
DECLARE @EmployeeList varchar(100) 

SELECT @EmployeeList = COALESCE(@EmployeeList + ', ', '') + 
    CAST(Emp_UniqueID AS varchar(5)) 
FROM SalesCallsEmployees 
WHERE SalCal_UniqueID = 1 

SELECT @EmployeeList 

Ergebnisse:

1, 2, 4 
3

Dies funktioniert nur in MSSQL 2005+

select value + ',' from simpletable for xml path ('') 

..one Weise die extra zu verhindern Komma:

select case(row_number() over (order by id)) 
when 1 then value else ',' + value end 
from simpletable 
for xml path ('') 
+0

Funktioniert nur in SQL Server 2005+, aber es ist ein Spaß Hack. – FlySwat

+0

wenn es nur einen glatten Weg gab, um das letzte Komma zu entfernen :) – dotjoe

+0

hinzugefügt einen glatten Weg, um das letzte Komma zu entfernen :) – gordy

0

Dies basiert auf der @codeulike-Antwort, verhindert jedoch, dass der Teil der Zeichenfolge verloren geht, der verkettet wird, bevor ein Null- "Wert" verkettet wird.

declare @combined varchar(2000) 
select @combined = isnull(@combined + ', ','') + ISNULL(value,'') 
from simpleTable 

print @combined 
Verwandte Themen