sql将查询的多行结果使用逗号连接拼接成一行
语法如下:
SELECT STUFF((select \',\'+c.MR_RolName from 查询语句 FOR XML PATH(\'\')),1,1,\'\');
解释如下
1.STUFF函数。表示截取拼接函数
第一个参数表示原字符串
第二个参数表示从哪个坐标开始,参数从1开始
第三个参数表示截取几位。
最后一个参数表示将什么内容插入到截取部分。
2.FOR XML PATH(\’\’)
表示将查询结果按照xml形式展示,path里面的内容表示父节点的名称,这里的\’\’表示为空
比如我在这里没有给 \’,\’+c.MR_RolName 添加自定义名称,所以为空,加入定义了,比如myname,就会变成
<myname>\’,\’+c.MR_RolName</myname><myname>\’,\’+c.MR_RolName</myname>。。。
以一行展示,但是没有定义的话,就是
\’,\’+c.MR_RolName \’,\’+c.MR_RolName
那么就很清晰了。上面的语句,就是先把查询结果换成逗号加参数的形式以一行展示,然后去除掉第一个逗号,赋值为\’\’
如果还不是很清楚的话,可以参考其他博客:
http://www.360doc.com/content/20/0214/22/11881101_892070529.shtml