本文主要介绍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 指令,这里就不一一列举了

转载---SQL Server XML基础学习<2>之--FOR XML AUTO/RAW的更多相关文章

  1. 转载---SQL Server XML基础学习<3>之--FOR XML EXPLICIT

    --使用 RAW 和 AUTO 模式不能很好地控制从查询结果生成的 XML 的形状.--但是,对于要从查询结果生成 XML,EXPLICIT 模式会提供非常好的灵活性. --必须以特定的方式编写 EX ...

  2. 转载---SQL Server XML基础学习<1>之--FOR XML PATH

    --> 测试数据:#tbIF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL    DROP TABLE #tbGO CREATE TABLE #tb      ...

  3. sql server 数据库基础学习心得 思维导图

  4. XML基础学习02<linq to xml>

    Linq to XML的理解 1:这是一种比较好的操作Xml的工具. àXDocument 文档 àXElement 元素 àXAttribute 属性 àXText 文本 2:这里还是和我们之前创建 ...

  5. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

  6. mysql与sql server参照对比学习mysql

    mysql与sql server参照对比学习mysql 关键词:mysql语法.mysql基础 转自桦仔系列:http://www.cnblogs.com/lyhabc/p/3691555.html ...

  7. cmd常用命令 和 sql server相关基础

    在Java开发中 ms sql server 接触算是比较少的,本文记录一些ms sql server的基础知识. 1. 为表字段增加索引:create index user_openid on us ...

  8. Sql Server数据库基础

    --------------------------------------第一章  Sql Server数据库基础------------------------------------------ ...

  9. 第一篇——第一文 SQL Server 备份基础

    原文:第一篇--第一文 SQL Server 备份基础 当看这篇文章之前,请先给你的所有重要的库做一次完整数据库备份.下面正式开始备份还原的旅程. 原文出处: http://blog.csdn.net ...

随机推荐

  1. 2015年10月22日CSS学习笔记

    XHTML1.0对HTML4.0的改进 借鉴了XML的写法,语法更加严格. 把页面的内容和样式分离了,废弃了html4中的表示样式的标签和属性.推荐使用css来描述页面的样式. CSS样式的优先级 ! ...

  2. 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程02:关键帧动画导入与切割》

    2. 关键帧动画导入与切割 动画的分割与导入概述: 在游戏当中,游戏角色在不同状态下会有不同的动作,这些动作在引擎里相当于一段段的动画片段.当导入模型资源的时候,连同模型动画都会一并导入到引擎中.开发 ...

  3. HW1.3

    public class Solution { public static void main(String[] args) { System.out.println(" J A V V A ...

  4. POJ-1177 Picture 矩形覆盖周长并

    题目链接:http://poj.org/problem?id=1177 比矩形面积并麻烦点,需要更新竖边的条数(平行于x轴扫描)..求横边的时候,保存上一个结果,加上当前长度与上一个结果差的绝对值就行 ...

  5. POJ1811- Prime Test(Miller–Rabin+Pollard's rho)

    题目大意 给你一个非常大的整数,判断它是不是素数,如果不是则输出它的最小的因子 题解 看了一整天<初等数论及其应用>相关部分,终于把Miller–Rabin和Pollard's rho这两 ...

  6. puppet案例

    实例一.文件分发描述:通过puppet服务端可以向被管理机(客户端)上推送文件,方法是使用file类型的source属性 第一步:#vi /etc/puppet/fileserver.conf  1  ...

  7. [一]初识Ajax

    是什么? 一种网页交换数据的技术 作用: 使页面局部刷新,获取后台数据 怎么做? 调用浏览器内置对象发送异步请求

  8. Struts一张图

  9. JS获取浏览器可视区域尺寸

    本文所说的是浏览器窗口的可视区域大小,不是浏览器窗口大小,也非页面尺寸. 在没有声明DOCTYPE的IE中,浏览器显示窗口大小只能以下获取: document.body.offsetWidth doc ...

  10. 用Natvis定制C++对象在Visual Studio调试时如何显示

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用Natvis定制C++对象在Visual Studio调试时如何显示.