• 转载---SQL Server XML基础学习<2>之--FOR XML AUTO/RAW


    本文主要介绍FOR XML 的 AUTO 模式和 RAW 模式

    --AUTO 模式将查询结果以嵌套 XML 元素的方式返回。这不能较好地控制从查询结果生成的 XML 的形式。

    --如果要生成简单的层次结构,AUTO 模式查询很有用。
    --但是,使用 EXPLICIT 模式和使用 PATH 模式在确定从查询结果生成的 XML 的形式方面可提供更好的控制和更大的灵活性。


    --> 测试数据:#tb
    IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL 
       DROP TABLE #tb
    GO 
    CREATE TABLE #tb
           (
            [id] INT IDENTITY PRIMARY KEY ,
            [name] VARCHAR(4),
            [type] VARCHAR(10)
           )
    INSERT  #tb
            SELECT  '彪' , '流氓'
            UNION ALL
            SELECT  '阿紫' , '流氓'
            UNION ALL
            SELECT  '小强' , '流氓'
            UNION ALL
            SELECT  '光辉' , '臭流氓'
            UNION ALL
            SELECT  '小D' , '臭流氓'
            UNION ALL
            SELECT  '野子' , '臭流氓'
    --------------开始查询--------------------------
    SELECT * FROM #tb FOR XML AUTO
    /*
    <_x0023_tb id="1" name="彪" type="流氓" />
    <_x0023_tb id="2" name="阿紫" type="流氓" />
    <_x0023_tb id="3" name="小强" type="流氓" />
    <_x0023_tb id="4" name="光辉" type="臭流氓" />
    <_x0023_tb id="5" name="小D" type="臭流氓" />
    <_x0023_tb id="6" name="野子" type="臭流氓" />


    */
    --ELEMENTS 选项,将返回以元素为中心的 XML。
    SELECT * FROM #tb FOR XML AUTO,ELEMENTS
    /*
    <_x0023_tb>
      <id>1</id>
      <name>彪</name>
      <type>流氓</type>
    </_x0023_tb>
    <_x0023_tb>
      <id>2</id>
      <name>阿紫</name>
      <type>流氓</type>
    </_x0023_tb>
    <_x0023_tb>
      <id>3</id>
      <name>小强</name>
      <type>流氓</type>
    </_x0023_tb>
    <_x0023_tb>
      <id>4</id>
      <name>光辉</name>
      <type>臭流氓</type>
    </_x0023_tb>
    <_x0023_tb>
      <id>5</id>
      <name>小D</name>
      <type>臭流氓</type>
    </_x0023_tb>
    <_x0023_tb>
      <id>6</id>
      <name>野子</name>
      <type>臭流氓</type>
    </_x0023_tb>
    */
    =




    --RAW 模式将查询结果集中的每一行转换为带有通用标识符 <row> 或可能提供元素名称的 XML 元素。
    --默认情况下,行集中非 NULL 的每列值都将映射为 <row> 元素的一个属性。
    --如果将 ELEMENTS 指令添加到 FOR XML 子句,则每个列值都将映射到 <row> 元素的子元素。
    --指定 ELEMENTS 指令之后,您还可以选择性地指定 XSINIL 选项以将结果集中的 NULL 列值映射到具有 xsi:nil="true" 属性的元素。




    SELECT * FROM #tb FOR XML RAW 
    /*
    <row id="1" name="彪" type="流氓" />
    <row id="2" name="阿紫" type="流氓" />
    <row id="3" name="小强" type="流氓" />
    <row id="4" name="光辉" type="臭流氓" />
    <row id="5" name="小D" type="臭流氓" />
    <row id="6" name="野子" type="臭流氓" />
    */
    --使用 XMLDATA 和 XMLSCHEMA 选项作为结果请求架构 
    SELECT * FROM #tb FOR XML RAW, XMLDATA ;
    --检索二进制数据 


    DECLARE @a VARBINARY(10)=0x78786F6F
    SELECT @a AS 'VARBINARY' FOR XML RAW,BINARY BASE64
    --结果为base64 编码的二进制数据
    /*
    XML_F52E2B61-18A1-11d1-B105-00805F49916B
    <row VARBINARY="eHhvbw=="/>
    */
    --对于结果集中的每一行,RAW 模式都生成一个元素 <row>。
    --您可以通过向 RAW 模式指定一个可选参数为该元素指定另一个名称,如该查询中所示。
    SELECT * FROM #tb FOR XML RAW('流氓们')


    --AUTO 模式和 RAW 模式都可以使用 ROOT , ELEMENTS XSINIL, TYPE 指令,这里就不一一列举了

    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    Spring基础知识点总结
    秒懂设计模式--代理模式(proxy)
    秒懂设计模式--工厂模式
    秒懂设计模式--适配器模式
    秒懂设计模式--装饰者模式
    秒懂设计模式--观察者模式
    单例模式的几种实现
    springboot2.0+spring cloud+eureka搭建微服务步骤
    字符串排序算法
    bitbucket的简单使用
  • 原文地址:https://www.cnblogs.com/Frank99/p/5974469.html
Copyright © 2020-2023  润新知