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