SQL For XML

系统 1950 0

在SQL中运用For XML将数据集以XML形式展现,以下是备用数据

      
        CREATE
      
      
        TABLE
      
       #tab(ID 
      
        INT
      
      , Name 
      
        NVARCHAR
      
      (
      
        20
      
      
        ))


      
      
        INSERT
      
      
        INTO
      
      
         #tab ( ID, Name )


      
      
        SELECT
      
      
        1
      
      ,N
      
        '
      
      
        chris
      
      
        '
      
      
        UNION
      
      
        SELECT
      
      
        2
      
      ,N
      
        '
      
      
        mark
      
      
        '
      
      
        UNION
      
      
        SELECT
      
      
        3
      
      ,N
      
        '
      
      
        andy
      
      
        '
      
    

1、AUTO模式,将查询结果的每一行转为元素,元素名以表名命名,每一列(非NULL)转换成row元素的属性。

      
        SELECT
      
      
        *
      
      
        FROM
      
       #tab 
      
        FOR
      
       XML AUTO
    
      
        <
      
      
        _x0023_tab 
      
      
        ID
      
      
        ="1"
      
      
         Name
      
      
        ="chris"
      
      
        />
      
      
        <
      
      
        _x0023_tab 
      
      
        ID
      
      
        ="2"
      
      
         Name
      
      
        ="mark"
      
      
        />
      
      
        <
      
      
        _x0023_tab 
      
      
        ID
      
      
        ="3"
      
      
         Name
      
      
        ="andy"
      
      
        />
      
    

2、RAW模式,和AUTO类似,只是元素以row命名。

      
        SELECT
      
      
        *
      
      
        FROM
      
       #tab 
      
        FOR
      
       XML 
      
        RAW
      
    
      
        <
      
      
        row 
      
      
        ID
      
      
        ="1"
      
      
         Name
      
      
        ="chris"
      
      
        />
      
      
        <
      
      
        row 
      
      
        ID
      
      
        ="2"
      
      
         Name
      
      
        ="mark"
      
      
        />
      
      
        <
      
      
        row 
      
      
        ID
      
      
        ="3"
      
      
         Name
      
      
        ="andy"
      
      
        />
      
    

3、ELEMENTS,将每一列作为一个元素。

      
        SELECT
      
      
        *
      
      
        FROM
      
       #tab 
      
        FOR
      
       XML AUTO,ELEMENTS 
    
      
        <
      
      
        _x0023_tab
      
      
        >
      
      
        <
      
      
        ID
      
      
        >
      
      1
      
        </
      
      
        ID
      
      
        >
      
      
        <
      
      
        Name
      
      
        >
      
      chris
      
        </
      
      
        Name
      
      
        >
      
      
        </
      
      
        _x0023_tab
      
      
        >
      
      
        <
      
      
        _x0023_tab
      
      
        >
      
      
        <
      
      
        ID
      
      
        >
      
      2
      
        </
      
      
        ID
      
      
        >
      
      
        <
      
      
        Name
      
      
        >
      
      mark
      
        </
      
      
        Name
      
      
        >
      
      
        </
      
      
        _x0023_tab
      
      
        >
      
      
        <
      
      
        _x0023_tab
      
      
        >
      
      
        <
      
      
        ID
      
      
        >
      
      3
      
        </
      
      
        ID
      
      
        >
      
      
        <
      
      
        Name
      
      
        >
      
      andy
      
        </
      
      
        Name
      
      
        >
      
      
        </
      
      
        _x0023_tab
      
      
        >
      
    

4、PATH,用法更加灵活,可以自定义节点、元素、属性等。ROOT,增加根节点。

      
        SELECT
      
      
        *
      
      
        FROM
      
       #tab 
      
        FOR
      
       XML PATH(
      
        '
      
      
        employee
      
      
        '
      
      ),ELEMENTS
    
      
        <
      
      
        employee
      
      
        >
      
      
        <
      
      
        ID
      
      
        >
      
      1
      
        </
      
      
        ID
      
      
        >
      
      
        <
      
      
        Name
      
      
        >
      
      chris
      
        </
      
      
        Name
      
      
        >
      
      
        </
      
      
        employee
      
      
        >
      
      
        <
      
      
        employee
      
      
        >
      
      
        <
      
      
        ID
      
      
        >
      
      2
      
        </
      
      
        ID
      
      
        >
      
      
        <
      
      
        Name
      
      
        >
      
      mark
      
        </
      
      
        Name
      
      
        >
      
      
        </
      
      
        employee
      
      
        >
      
      
        <
      
      
        employee
      
      
        >
      
      
        <
      
      
        ID
      
      
        >
      
      3
      
        </
      
      
        ID
      
      
        >
      
      
        <
      
      
        Name
      
      
        >
      
      andy
      
        </
      
      
        Name
      
      
        >
      
      
        </
      
      
        employee
      
      
        >
      
    
      
        SELECT
      
       ID 
      
        AS
      
      
        '
      
      
        staff/@ID
      
      
        '
      
      ,NAME 
      
        AS
      
      
        '
      
      
        staff/@Name
      
      
        '
      
      ,
      
        ''
      
      
        , 

ID 
      
      
        AS
      
      
        '
      
      
        ID
      
      
        '
      
      ,
      
        ''
      
      , NAME 
      
        AS
      
      
        '
      
      
        Name
      
      
        '
      
      
        FROM
      
       #tab 
      
        FOR
      
       XML PATH(
      
        '
      
      
        employee
      
      
        '
      
      ),ROOT(
      
        '
      
      
        all
      
      
        '
      
      )
    
      
        <
      
      
        all
      
      
        >
      
      
        <
      
      
        employee
      
      
        >
      
      
        <
      
      
        staff 
      
      
        ID
      
      
        ="1"
      
      
         Name
      
      
        ="chris"
      
      
        />
      
      
        <
      
      
        ID
      
      
        >
      
      1
      
        </
      
      
        ID
      
      
        >
      
      
        <
      
      
        Name
      
      
        >
      
      chris
      
        </
      
      
        Name
      
      
        >
      
      
        </
      
      
        employee
      
      
        >
      
      
        <
      
      
        employee
      
      
        >
      
      
        <
      
      
        staff 
      
      
        ID
      
      
        ="2"
      
      
         Name
      
      
        ="mark"
      
      
        />
      
      
        <
      
      
        ID
      
      
        >
      
      2
      
        </
      
      
        ID
      
      
        >
      
      
        <
      
      
        Name
      
      
        >
      
      mark
      
        </
      
      
        Name
      
      
        >
      
      
        </
      
      
        employee
      
      
        >
      
      
        <
      
      
        employee
      
      
        >
      
      
        <
      
      
        staff 
      
      
        ID
      
      
        ="3"
      
      
         Name
      
      
        ="andy"
      
      
        />
      
      
        <
      
      
        ID
      
      
        >
      
      3
      
        </
      
      
        ID
      
      
        >
      
      
        <
      
      
        Name
      
      
        >
      
      andy
      
        </
      
      
        Name
      
      
        >
      
      
        </
      
      
        employee
      
      
        >
      
      
        </
      
      
        all
      
      
        >
      
    

 

 

 

SQL For XML


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论