2009-05-04 74 views

回答

5

您可以在查詢串聯使用嵌入的 '設置' 聲明:

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

print @combined

(注意,第一個ISNULL()初始化字符串,而第二個isnull()尤其重要,如果'值'列中有任何空值的情況,否則單個空值可能會消除整個級聯)

(評論後編輯的代碼和說明)

+0

甜美!我沒有意識到你可以做到這一點。我總是認爲設置和選擇工作是一樣的分配。 – 2009-05-05 02:18:03

+1

你可能希望使它成爲「+ ISNULL(value,'')」,因爲「+ value」會將空字符串的任何部分清零,並且空值爲 – 2009-05-05 20:42:20

2
DECLARE @EmployeeList varchar(100) 

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

SELECT @EmployeeList 

結果:

1, 2, 4 
3

這隻會在MSSQL工作2005+

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

..one方法,以防止多餘的逗號:

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

這是基於@codeulike的答案,但會防止在連接空值「值」之前丟失連接的字符串部分。

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

print @combined 
相關問題