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

转载于:https://www.cnblogs.com/Frank99/p/5974469.html

转载---SQL Server XML基础学习2之--FOR XML AUTO/RAW相关推荐

  1. 1 SQL server数据库基础

    SQL server数据库基础 一 数据库简介 1数据库的基本概念 1)数据 ·描述事物的符号记录称为数据(Data),包括数字.文字.图像.声音等.以"记录"的形式按统一格式进行 ...

  2. [转]SQL Server 索引基础知识(2)----聚集索引,非聚集索引

    SQL Server 索引基础知识(2)----聚集索引,非聚集索引 [来自]http://blog.joycode.com/ghj/archive/2008/01/02/113291.aspx 由于 ...

  3. SQL Server 2008 基础

    SQL Server 2008 基础 SQL流程 TDS是一种协议,一系列描述两个计算机间如何传输数据的规则.象别的协议一样,它定义了传输信息的类型和他们传输的顺序.总之,协议描述了"线上的 ...

  4. sql server 循环_学习SQL:SQL Server循环简介

    sql server 循环 Loops are one of the most basic, still very powerful concepts in programming – the sam ...

  5. 数据库设计-SQL Server开发实现学习

    1.目录 SQL Server数据库基础 T-SQL语言编程框架 实例规范:项目 笔记1 SQL Server数据库基础 1. 1数据库及其对象 SQLserver的数据库是所涉及的对象以及数据的集合 ...

  6. c井语言和SQL第一章上机1,第一章 SQL Server 数据库基础复习内容(上机)

    上机课程总目标 在本学期中,将模拟开发一套学员信息管理系统,用来管理学员的个人基本资料,老师资料,学生成绩,课程信息等教学相关内容,以实现学校的信息自动化,提高工作效率. 该系统包括学生档案管理.学生 ...

  7. SQL Server 索引基础知识(8)--- 数据基本格式补充(转自蝈蝈俊.net)

    我在SQL Server 索引基础知识系列中,第一篇就讲了记录数据的基本格式.那里主要讲解的是,数据库的最小读存单元:数据页.一个数据页是8K大小. 对于数据库来说,它不会每次有一个数据页变化后,就存 ...

  8. 转载---SQL Server XML基础学习之5--XQuery(query)

    本章写一些SQL Server XML的一些XQuery基础语法,主要讲的query查询语法 T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. XQuery 基于现有的 XPa ...

  9. SQL Server XML基础学习之5—XQuery(query)

    T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. XQuery 基于现有的 XPath 查询语言,并支持更好的迭代.更好的排序结果以及构造必需的 XML 的功能. 在前面我们已 ...

最新文章

  1. 爱尔兰塔拉理工学院计算机,我校召开与爱尔兰塔拉理工学院合作办学项目联合管理委员会会议...
  2. Android.mk 文件语法详解
  3. 6、SpringBoot+Mybatis整合------参数传递
  4. Spring boot 和Vue开发中CORS跨域问题
  5. boost::integer::gcd和boost::integer::lcm用法的测试程序
  6. ES5-17/18 错误信息、try_catch、严格模式
  7. mac p配置android开发,Mac 下配置Android 环境变量
  8. Python基础:字典(dict)与集合(set)
  9. 自己组装nas服务器万兆,我用最便宜的方法,配了一套万兆 NAS
  10. AES前端flutter加密与后端java解密pad block corrupted问题
  11. html页眉页脚独立,word中怎样单独页面设置页眉
  12. javax.mail实现收发邮件
  13. 企业使用云平台,存在的三个问题
  14. 云计算的优势和存在的问题
  15. 【公众号技能+】添加白名单,允许其他公众号转载文章
  16. 三维地图之Google earth安装使用
  17. 投资理财-朋友榕的经历
  18. 搭建环境创建vue项目
  19. SpringCache源码学习笔记
  20. JESD204接口调试总结——Xilinx JESD204C IP AXI寄存器简介

热门文章

  1. RHEL6入门系列之三十,服务管理
  2. Iptables防火墙配置
  3. 2016年3月23日作业
  4. mongodb 监控命令mongostat
  5. 设计模式系列--Strategy
  6. 走向.NET架构设计—第四章—业务层分层架构(前篇)
  7. 写段QTP脚本与大家一起分享
  8. 合适是最好,声音选项里面 声音的硬件加速到底有什么用
  9. 使用ViewPager实现左右循环滑动图片
  10. android 跳转到小米手机神隐模式