您的位置:首页 > 数据库

SqlServer 如何将查询出的多行数据拼成一个字符串返回

2014-12-17 10:36 811 查看
我们在查询或做报表时,会遇到这样的情况,一个主表table_main,一个字表table_sub

查询时需要显示主表的字段,然后把子表的内容拼成一个字符串与主表一起显示

例如:

table_main
main_idmain_name
1张三
2李四
table_sub
main_idsub_hobby
1唱歌
1跳舞
2足球
2篮球
2羽毛球
我们可以执行下面的语句得到预期效果,如下:

SELECT main_id,main_name,

main_hobby=STUFF((SELECT ','+sub_hobby FROM 

table_sub WHERE main_id=t.main_id FOR XML PATH('')),1,1,'')

FROM table_main t

GROUP BY main_id,main_name

 1张三唱歌,跳舞
 2李四足球,篮球,羽毛球
分析:

stuff(select ',' + fieldname  from tablename for xml path('')),1,1,'')

这句话的作用便是将多行fieldname字段的内容拼成字符串,并用逗号隔开。

for xml path是SQL Server 2005以后版本支持的将查询内容拼成XML的方法。

stuff函数的作用是去掉字符串最前面的一个逗号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐