016_openxml_forxml

--openxml***********************************************************************

--将xml变量或者xml列的数据以表格显示

DECLARE @idoc int

DECLARE @doc nvarchar(max)

SET @doc =CONVERT(nVARCHAR(max),(SELECT tp.query('.') xml FROM test_xml WHERE id=N'4273465F-11DA-42C9-A457-E1ABAEE0CE58'))

--调用 sp_xml_preparedocument 以获得文档句柄。此文档句柄传递给 OPENXML

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

--1 使用“以属性为中心”的映射

SELECT *

FROM OPENXML(@idoc,'/bookstore/book/title',1)

WITH(lang NVARCHAR(100) '@lang',

category nvarchar(100) '../@category')

--2 使用“以元素为中心”的映射

SELECT *

FROM OPENXML (@idoc,'/bookstore/book',2)

WITH (title  varchar(10),

year varchar(20))

--移除句柄

EXEC sp_xml_removedocument @idoc

--for xml***********************************************************************

--将关系型表格数据以xml的形式来显示

--FOR XML PATH---------------------------------------

SELECT ParentObject,Object,Field,Value

FROM dbo.dbcc_page

FOR XML PATH,TYPE,ROOT('test')

--FOR XML EXPLICIT---------------------------------------

--创建test_explicit集合

WITH test_explicit

AS (

SELECT

1 tag,null parent,'white' [shark!1!name],NULL [fish!2!name],NULL [water!3!xian]

UNION ALL

SELECT 2,1,NULL,'liyu',NULL

UNION ALL

SELECT 3,2,NULL,NULL,'xian'

)

--查询集合,并用 EXPLICIT 格式显示

SELECT * from test_explicit FOR XML EXPLICIT

--1.查询样例

SELECT * FROM test_xml WHERE id=N'4273465F-11DA-42C9-A457-E1ABAEE0CE58' FOR XML PATH,ELEMENTS

--2.OPENXML 【在 XML 数据和关系行集间使用映射以及应如何填充溢出列】

/*

0  默认为“以属性为中心”的映射。

1  使用“以属性为中心”的映射。可以与 XML_ELEMENTS 一起使用。这种情况下,首先应用“以属性为中心”的映射,然后对所有未处理的列应用“以元素为中心”的映射。

2  使用“以元素为中心”的映射。可以与 XML_ATTRIBUTES 一起使用。这种情况下,首先应用“以属性为中心”的映射,然后对所有未处理的列应用“以元素为中心”的映射。

8  可与 XML_ATTRIBUTES 或 XML_ELEMENTS 组合使用(逻辑或)。在检索的上下文中,该标志指示不应将已使用的数据复制到溢出属性 @mp:xmltext。

*/

--3.for xml

/*

RAW  为 SELECT 语句所返回行集中的每行生成一个 <row> 元素。可以通过编写嵌套 FOR XML 查询来生成 XML 层次结构。

AUTO  基于指定 SELECT 语句的方式来使用试探性方法在 XML 结果中生成嵌套。

EXPLICIT 随意混合属性和元素来确定 XML 的形状

PATH  与嵌套 FOR XML 查询功能一起以较简单的方式提供了 EXPLICIT 模式的灵活性。

*/

--4. FOR XML EXPLICIT

/*

第一列必须提供当前元素的标记号(整数类型),并且列名必须是 Tag。查询必须为从行集构造的每个元素提供唯一标记号。

第二列必须提供父元素的标记号,并且此列的列名必须是 Parent。这样,Tag 和 Parent 列将提供层次结构信息。

*/

016_openxml_forxml的更多相关文章

随机推荐

  1. HashMap通过value反查key

            这是今天做了一道字符串的问题,一直MLE,所以想到了减少Map里对应关系数量来降低内存开销.随手谷歌,整理出了如下资料.       如果效率优先的话还是写俩Map吧. import ...

  2. c++子类继承父类的覆盖问题

    废话少说,先看一段代码! #include <iostream> #include <string> using namespace std; class A { public ...

  3. 数据结构(动态树):UOJ 207 共价大爷游长沙

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABHwAAAJZCAIAAABUW7XHAAAgAElEQVR4nOy93cstx5Xm2f9TXh2EOe

  4. iOS开发ARC入门和使用

    本文引自:http://www.onevcat.com/2012/06/arc-hand-by-hand/ 英文原版:http://www.raywenderlich.com/5677/beginni ...

  5. zoj 1586

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1586 //zoj 1586 #include<iostream> ...

  6. 《A First Course in Probability》-chape6-随机变量的联合分布-基本概念

    之前我们探讨了一元随机变量的分布列,下面我们应该将相应的性质推广到多元随机变量的分布列,在这里我们主要以讨论二元随机变量分布列为主. 利用类比的方法,我们很容易将一元随机变量的分布列的性质推广上来. ...

  7. Jenkins 九: 小技巧

    1.  问题: jenkins的项目默认存放在 JENKINS_HOME下面的 workspace路径下,导致每次找项目都很不方便. 解决思路:更改jenkins的项目存放地址. 解决方法: 1) 将 ...

  8. scipy安装失败

    pip install scipy安装失败 可以从uci网站下载wheel安装包然后执行pip install xx.whl进行安装 http://www.lfd.uci.edu/~gohlke/py ...

  9. bzoj4028: [HEOI2015]公约数数列

    Description 设计一个数据结构. 给定一个正整数数列 a_0, a_1, ..., a_{n - 1},你需要支持以下两种操作: 1. MODIFY id x: 将 a_{id} 修改为 x ...

  10. .NET 性能分析工具

    Download .NET Profiler http://www.yourkit.com/dotnet/download/ dotTrace 5.5 Performance http://www.j ...