zoukankan      html  css  js  c++  java
  • SQL中 FOR XML PATH 函数用法

    SQL中 FOR XML PATH 函数用法

    假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下:

    FOR XML PATH 简单介绍

    --按XML格式输出查询结果
    select * from dbo.Hobby for xml path
    --自定义XML行节点名称 select * from dbo.Hobby for xml path('MyHobby')
    --自定义XML列节点名称 select hobbyId as 'MyCode', hName as 'MyName' from dbo.Hobby for xml path('MyHobby')
    --对字符串类型字段自定义输出格式 SELECT '[ '+hName+' ]' FROM dbo.Hobby FOR XML PATH('')
    --对其他类型的列自定义输出格式:将它们转换成字符串格式 select '{'+STR(hobbyId)+'}','[ '+hName+' ]' FROM dbo.Hobby FOR XML PATH('')

    查询结果:

     1 <!--按XML格式输出查询结果-->
     2 <row>
     3   <hobbyId>1</hobbyId>
     4   <hName>爬山</hName>
     5 </row>
     6 <row>
     7   <hobbyId>2</hobbyId>
     8   <hName>游泳</hName>
     9 </row>
    10 <row>
    11   <hobbyId>3</hobbyId>
    12   <hName>美食</hName>
    13 </row>
    14 
    15 <!--自定义XML行节点名称-->
    16 <MyHobby>
    17   <hobbyId>1</hobbyId>
    18   <hName>爬山</hName>
    19 </MyHobby>
    20 <MyHobby>
    21   <hobbyId>2</hobbyId>
    22   <hName>游泳</hName>
    23 </MyHobby>
    24 <MyHobby>
    25   <hobbyId>3</hobbyId>
    26   <hName>美食</hName>
    27 </MyHobby>
    28 
    29 <!--自定义XML列节点名称-->
    30 <MyHobby>
    31   <MyCode>1</MyCode>
    32   <MyName>爬山</MyName>
    33 </MyHobby>
    34 <MyHobby>
    35   <MyCode>2</MyCode>
    36   <MyName>游泳</MyName>
    37 </MyHobby>
    38 <MyHobby>
    39   <MyCode>3</MyCode>
    40   <MyName>美食</MyName>
    41 </MyHobby>
    42 
    43 <!--对字符串类型字段自定义输出格式-->
    44 [ 爬山 ][ 游泳 ][ 美食 ]
    45 
    46 <!--对其他类型的列自定义输出格式-->
    47 {         1}[ 爬山 ]{         2}[ 游泳 ]{         3}[ 美食 ]
    View Code

    FOR XML PATH 简单应用

    增加一张学生表,列分别为(stuId,sName,hName),stuID代表学生编号,sName代表学生姓名,hobby列存学生的爱好,表结构如下:

    以“爱好1,爱好2,爱好3...”的格式显示数据

    --显示所有学生的爱好的结果集
    select A.sName,
        (select hName+'' from dbo.StudentHobby
            where sName=A.sName for xml path('')) as hobbyList 
    from dbo.StudentHobby A
    group by A.sName
    
    --去除逗号显示
    select b.sName, left(B.hobbyList, len(B.hobbyList)-1) as StuHobby from (
        select A.sName,
        (select hName+'' from dbo.StudentHobby
            where sName=A.sName for xml path('')) as hobbyList 
        from dbo.StudentHobby A
        group by A.sName
    )B

    查询结果:

     

  • 相关阅读:
    poj 3254 Corn Fields (状态压缩dp)
    poj 2479 Maximum sum(求最大子段和的延伸)
    poj 1185 炮兵阵地 (状态压缩dp)
    poj 1011 hdoj 1455 Sticks(搜索+剪枝)
    light oj 1255 Substring Frequency (KMP)
    codeforces 272C. Dima and Staircase(线段树)
    hdoj 1176免费馅饼(dp)
    求最大连续子段和 的 dp算法
    light oj 1258 Making Huge Palindromes(KMP)
    实战 | UI 调度自动化测试平台(基于 Python)
  • 原文地址:https://www.cnblogs.com/zhaoyl9/p/13793235.html
Copyright © 2011-2022 走看看