2013-08-07 30 views
10

如何將多行連接成一個字符串?如何在SQL Server 2008中將多行連接爲一個字符串?

查詢:

SELECT name FROM mytable; 

結果:

name 
---- 
kim 
lee 
park 
cho 

只是我想要的。

name 
---- 
kim,lee,park,cho 

不可能嗎?

+0

重複 「MySQL的:多行作爲逗號分隔單列」 –

+0

http://stackoverflow.com/questions/5196371/sql-query-concatenating-results-into-one-string – garf1eld

回答

38

嘗試這一個 -

DECLARE @temp TABLE (name NVARCHAR(50)) 

INSERT INTO @temp (name) 
VALUES ('kim'),('lee'),('park'),('cho') 

SELECT STUFF((
    SELECT ',' + name 
    FROM @temp 
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') 

輸出 -

kim,lee,park,cho 
+4

對這種工作原理的解釋將對未來的訪問者有所幫助。 – Nubcake

8

試試這個

SELECT 
name= substring((SELECT (', ' + Name) 
         FROM TableName t 
         FOR XML PATH('') 
        ), 3, 1000) FROM mytable tn 
10

我一直在這個清晨類似的東西,加入的情況下也會爲工作1返回行。希望這可以幫助。否則,按照鏈接發送給您的第一條評論。

Declare @NameList VarChar(MAX) = ''  
select @NameList = 
    case when @NameList = '' 
     then coalesce(Name, '') 
     else @NameList + coalesce(',' + Name, '') 
    end 
from mytable 
print @NameList 

相關問題