FOR XML PATH做为数据表中单列或者多列的字符串拼接的方法,放到一列中去,很好用。

先看看自己弄得例子,SELECT sName+',',hoppy+','  FROM student2 where hoppy='游泳' FOR XML PATH('')--PATH后面跟的是行标题,前面搜索到的结果是列标题

这个是搜索游泳爱好的人的字符串连接起来,并加上爱好字符串,如果我想知道每项运动里面的人的爱好的人,和运动名称,那我可以写一个子查询去做哦。举例如下。

select distinct hoppy ,(SELECT sName+',' FROM student2 where (hoppy=a.hoppy  )  FOR XML PATH(''))from student2 as a --by group--()--PATH后面跟的是行标题,前面搜索到的结果是列标题

这句很好使很好用,哈哈哈

吃饭 WANGYI,
玩耍 WANGSAN,WANGER,
游泳 WANGER,WANGSI,WANGYI,

从别的地方看到还可以去掉最后一个逗号的用法,那就是嵌套一层哦。

select B.hoppy,left(B.niupi,LEN(B.niupi)-1) from (select distinct hoppy ,(SELECT sName+',' FROM student2 where (hoppy=a.hoppy  )  FOR XML PATH(''))as niupi from student2 as a)AS B --by group--()--PATH后面跟的是行标题,前面搜索到的结果是列标题

吃饭 WANGYI
玩耍 WANGSAN,WANGER
游泳 WANGER,WANGSI,WANGYI

从网上搜到几篇文章,在这里记录下,可以参考。

http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html

http://www.cnblogs.com/repository/archive/2011/01/18/1938418.html

原文地址:https://www.cnblogs.com/ModBus/p/5002670.html