首页  >  文章  >  数据库  >  SQL Server XML基础学习<2>之

SQL Server XML基础学习<2>之

WBOY
WBOY原创
2016-06-07 15:21:151295浏览

本文主要介绍FOR XML 的AUTO 模式和 RAW 模式 --AUTO 模式将查询结果以嵌套 XML 元素的方式返回。这不能较好地控制从查询结果生成的 XML 的形式。 --如果要生成简单的层次结构,AUTO 模式查询很有用。 --但是,使用 EXPLICIT 模式和使用 PATH 模式在确定从查

本文主要介绍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>
  1
 
  流氓

<_x0023_tb>
  2
  阿紫
  流氓

<_x0023_tb>
  3
  小强
  流氓

<_x0023_tb>
  4
  光辉
  臭流氓

<_x0023_tb>
  5
  小D
  臭流氓

<_x0023_tb>
  6
  野子
  臭流氓

*/
=




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




SELECT * FROM #tb FOR XML RAW 
/*






*/
--使用 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

*/
--对于结果集中的每一行,RAW 模式都生成一个元素
--您可以通过向 RAW 模式指定一个可选参数为该元素指定另一个名称,如该查询中所示。
SELECT * FROM #tb FOR XML RAW('流氓们')


--AUTO 模式和 RAW 模式都可以使用 ROOT , ELEMENTS XSINIL, TYPE 指令,这里就不一一列举了
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn