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函数的用法》