2009-05-04 79 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 
相关问题