2014-09-02 57 views
0

我有一個名爲name的表,它非常小,只存儲名稱和年齡。連接表的行的存儲過程

Name Age 
------------- 
Alex  3 
Laura 2 
Kate  2 
Max  3 

我需要編寫一個存儲過程,可以將此表的行連接到一個字符串中。我見過很多例子,但沒有一個真正幫助我。

該字符串需要返回爲「Alex,3; Laura,2; Kate,2; Max,3;」。

我想出一個簡單的方法來做到這一點會加入列一,添加逗號,然後將結果保存到一個臨時表中,以備以後使用:

select Name + ',' + cast(Age as varchar(3)) as both 
into #temptable 
from NameAge 

然後,我將加入每一行,並與分號分隔:

DECLARE @Names VARCHAR(8000) 
SELECT @Names = COALESCE(@Names + ';', '') + both FROM #temptable 
SELECT @Names 

它返回正確的結果,但我顯然不能,如果我做出改變,因爲臨時表已創建運行一前一後。

我基本上需要在存儲過程中使用這些語句,但是我在這樣做時遇到了一些麻煩。

任何幫助將不勝感激或鏈接到類似的東西,因爲我所有的搜索沒有出現相當我正在尋找。

回答

2
select 
    stuff((select ';' + Name + ',' + convert(varchar(255), Age) 
       from [name] 
       for xml path(N''), type).value(N'.[1]', N'nvarchar(max)') 
      ,1, 1, '') 

或使用你原來的解決方案:

DECLARE @Names VARCHAR(8000) 
SELECT @Names = COALESCE(@Names + ';', '') + Name + ',' + cast(Age as varchar(3)) FROM [name] 
SELECT @Names