创建一张测试表city,存放部分城市名称数据,现在演示如何将name字段多行记录存放为一行,查询城市表中的数据:

select top 6 name from city

sql server怎么拼接两个字段(SQLServer中一个字段多行数据合并成一行)(1)

下面通过两种方法将上面的6行记录展示为一行:贵阳市,长春市,七台河市,达州市,徐州市,绵阳市:

1. 使用字符串拼接

declare @str nvarchar(max); select @str = isnull(@str ',','') name from (select top 6 name from city )t select @str

sql server怎么拼接两个字段(SQLServer中一个字段多行数据合并成一行)(2)

2.使用 for xml path 函数

select top 6 ',' name from city for xml path('')

sql server怎么拼接两个字段(SQLServer中一个字段多行数据合并成一行)(3)

查询返回的是XML形式的数据,而且数据行最后多出了一个逗号,下面使用内置函数 STUFF 可以解决上面的两个问题:

select stuff( (select top 6 ',' name from city for xml path('') ), 1, 1, '')

sql server怎么拼接两个字段(SQLServer中一个字段多行数据合并成一行)(4)

,