创建一张测试表city,存放部分城市名称数据,现在演示如何将name字段多行记录存放为一行,查询城市表中的数据:
select top 6 name from city
下面通过两种方法将上面的6行记录展示为一行:贵阳市,长春市,七台河市,达州市,徐州市,绵阳市:
1. 使用字符串拼接
declare @str nvarchar(max);
select @str = isnull(@str ',','') name
from (select top 6 name from city )t
select @str
2.使用 for xml path 函数
select top 6 ',' name from city for xml path('')
查询返回的是XML形式的数据,而且数据行最后多出了一个逗号,下面使用内置函数 STUFF 可以解决上面的两个问题:
select stuff( (select top 6 ',' name from city for xml path('')
), 1, 1, '')
,