我有一个名为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
返回正确的结果,但是如果我进行了更改,我显然无法一个接一个地运行它,因为临时表已经创建了。
我基本上需要在存储过程中使用这些语句,但是我在执行此操作时遇到了一些麻烦。
任何帮助都会受到赞赏或链接到类似的东西,因为我所有的搜索都没有达到我想要的目的。
答案 0 :(得分: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