FOR XML PATH的作用就是将查询结果以XML形式展示,但是通过FOR XML PATH可以简化我们的查询语句,并实现以前一些需要借助函数才能实现的功能,如将查询结果以字符串的形式进行拼接。
1、把查询的结果转换为XML文件,TestTable表记录如下
FID FName FSex
1 张三 男
2 李四 男
3 王五 男
4 赵小花 女
5 苏××× 女
6 周小萌 女
包含for xml path的SQL语句如下
select FID,FName,FSex from TestTable for xml path
执行SQL语句后的结果为
<row>
<FID>1</FID>
<FName>张三</FName>
<FSex>男</FSex>
</row>
<row>
<FID>2</FID>
<FName>李四</FName>
<FSex>男</FSex>
</row>
<row>
<FID>3</FID>
<FName>王五</FName>
<FSex>男</FSex>
</row>
<row>
<FID>4</FID>
<FName>赵小花</FName>
<FSex>女</FSex>
</row>
<row>
<FID>5</FID>
<FName>苏×××</FName>
<FSex>女</FSex>
</row>
<row>
<FID>6</FID>
<FName>周小萌</FName>
<FSex>女</FSex>
</row>
2、使用for xml path实现字段拼接
把性别是男的人名拼接起来,需要的sql语句如下:
select ' '+FName from TestTable where FSex='男' for xml path('')
sql语句执行后的结果为: 张三 李四 王五。这样就实现了吧查询结果拼接的目的了。
3、在sql的查询中,一般使用相关子查询的方式,实现把拼接的结果输出的sql结果集中。如果字符串的拼接使用相关字符(|,)进行拼接的话,通常配合stuff函数进行操作。stuff函数的使用方法参照我的另一篇博客《SQL Server stuff函数的用法》。