SqlServer 如何将查询出的多行数据拼成一个字符串返回
2014-12-17 10:36
811 查看
我们在查询或做报表时,会遇到这样的情况,一个主表table_main,一个字表table_sub
查询时需要显示主表的字段,然后把子表的内容拼成一个字符串与主表一起显示
例如:
table_main
table_sub
我们可以执行下面的语句得到预期效果,如下:
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
分析:
stuff(select ',' + fieldname from tablename for xml path('')),1,1,'')
这句话的作用便是将多行fieldname字段的内容拼成字符串,并用逗号隔开。
for xml path是SQL Server 2005以后版本支持的将查询内容拼成XML的方法。
stuff函数的作用是去掉字符串最前面的一个逗号。
查询时需要显示主表的字段,然后把子表的内容拼成一个字符串与主表一起显示
例如:
main_id | main_name |
1 | 张三 |
2 | 李四 |
main_id | sub_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函数的作用是去掉字符串最前面的一个逗号。
相关文章推荐
- SqlServer 将查询出的多行数据拼成一个字符串返回
- sqlserver 函数里并返回一个表格数据拼接的字符串
- SqlServer和Oracle从多行记录(数据集)中查询结果并拼接成一个字符串的SQL语句(纵表数据转成拼接的文本)
- SqlServer 中Binary类型的数据如何转化为字符串
- Sqlserver 在查询分析器里如何访问远程的的数据库,进行数据查询更新等操作。
- 如何用动态SQL返回临时表的组合查询数据
- 查询数据库时如何把数据按照字段名和字段值的数据返回
- SQLServer如何用T—SQL命令查询一个数据库中有哪些表
- SQLSERVER查询单个数据表所有字段名组合成的字符串脚本
- SQLSqlserver中如何将一列数据拼接成一个字符串
- hibernate查询数据表char类型字段只返回一个字符
- 如何用SQL语句查询一个数据表所有字段的类型
- 在数据库查询语句中 要返回 一个集合的数据 的处理方式。
- hibernate查询数据表char类型字段只返回一个字符
- 列转行 将一列数据拼成一个字符串
- 如何在一个窗体关闭的时候,返回一个字符串
- 在Action中查询出SQL SERVER表的数据,返回一个list。怎么在JSP页面中使用Struts标签,显示出表中的内容?(转)
- 如何将一个字符串中的数据 以逗号为标示 分别存到另一个数组中
- SQLSERVER通过游标查询两个数据表共有字段名组合成的字符串
- SQLSERVER通过游标查询两个数据表共有字段名组合成的字符串