您的位置:首页 > 数据库 > 其它 > 正文

SQL中FOR XML PATH

更多 时间:2014-7-20 类别:数据库 浏览量:633

SQL中FOR XML PATH

SQL中FOR XML PATH

一 、FOR XML PATH实例介绍

 

1、兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下

 

hobbyID hName
1 爬山
2 游泳
3 美食

 

2、FOR XML PATH查询

(1)、SELECT * FROM hobby FOR XML PATH

结果:

  •  
  • XML 代码   复制
  • 
    <row>
      <hobbyID>1</hobbyID>
      <hName>爬山</hName>
    </row>
    <row>
      <hobbyID>2</hobbyID>
      <hName>游泳</hName>
    </row>
    <row>
      <hobbyID>3</hobbyID>
      <hName>美食</hName>
    </row>
    
    		
  •  

    (2)、改变XML行节点的名称

     

    SELECT * FROM hobby FOR XML PATH('MyHobby')

     

     结果

    原来的行节点<row> 变成了我们在PATH后面括号()中,自定义的名称<MyHobby>

  •  
  • XML 代码   复制
  • 
    <MyHobby>
      <hobbyID>1</hobbyID>
      <hName>爬山</hName>
    </MyHobby>
    <MyHobby>
      <hobbyID>2</hobbyID>
      <hName>游泳</hName>
    </MyHobby>
    <MyHobby>
      <hobbyID>3</hobbyID>
      <hName>美食</hName>
    </MyHobby>
    
    		
  •  

    (3)、改变XML列节点的名称

     

  • SELECT hobbyID as 'MyCode',hName as 'MyName' FROM hobby FOR XML PATH('MyHobby')
  •  
  •  
  • 结果
  •  
  •  
  • XML 代码   复制
  • 
    <MyHobby>
      <MyCode>1</MyCode>
      <MyName>爬山</MyName>
    </MyHobby>
    <MyHobby>
      <MyCode>2</MyCode>
      <MyName>游泳</MyName>
    </MyHobby>
    <MyHobby>
      <MyCode>3</MyCode>
      <MyName>美食</MyName>
    </MyHobby>
    
    			
  •  

    (4)、自定义输出方式

     

    SELECT ''+hName+' ]' FROM @hobby FOR XML PATH('')

     

    结果

    [ 爬山 ][ 游泳 ][ 美食 ]

     

     

    二、FOR XML PATH综合实例

     

    1、增加一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号,sName代表学生姓名,hobby列存学生的爱好!那么现在表结构如下:

    stuID sName hobby
    1 张三 爬山
    1 张三 游泳
    2 李四 美食
    3 李四 美食
    4 王五 爬山
    5 王五 游泳

     

    2、查询学生表,显示所有学生的爱好的结果集

  •  
  • SQL 代码   复制
  • 
    SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby FROM (
    SELECT sName,
    (SELECT hobby+',' FROM student 
      WHERE sName=A.sName 
      FOR XML PATH('')) AS StuList
    FROM student A 
    GROUP BY sName
    ) B 
    
    		
  •  

    3、结果

     

     

    标签:SQL
  • 上一篇:C#中的反射
  • 下一篇:程序员如何转型
  • 您可能感兴趣