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. cf B Bear and Strings

    题意:给你一个字符串,然后找多少区间内含有“bear”,输出数目: #include <cstdio> #include <cstring> #include <algo ...

  2. Android Wear开发 - 数据通讯 - 第一节 : 连接数据层

    http://developer.android.com/training/wearables/data-layer/accessing.html Accessing the Wearable Dat ...

  3. centos 6.5关闭NetworkManager

    jrhmpt01:/root# rpm -qa | grep -i network NetworkManager-glib-0.8.1-99.el6.x86_64 system-config-netw ...

  4. The Embarrassed Cryptographer(高精度取模+同余模定理)

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11435   Accepted: 3040 Description The ...

  5. 火狐浏览器对border-radius的渲染问题

  6. Linux企业级开发技术(7)——libevent企业级开发之锁和线程

    编写多线程程序的时候,在多个线程中同时访问同样的数据并不总是安全的. libevent的结构体在多线程下通常有三种工作方式: 1.某些结构体内在地是单线程的:同时在多个线程中使用它们总是不安全的. 2 ...

  7. Python修饰器

    Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都 ...

  8. 获取contenteditable的内容 对html进行处理 兼容 chrome、IE、Firefox

    var html = $(this).html();if(html){ var lineSign = html.indexOf('<div>'); if(html.indexOf('< ...

  9. 【Java每日一题】20170109

    20170106问题解析请点击今日问题下方的"[Java每日一题]20170109"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  10. webstrom开发微信小程序说明

    在操作之前,需要对webstrom做一些设置,如下 如果未安装node.js的朋友,请到如下地址 https://nodejs.org/en/ 安装(相信大家都是会的),如果安装完了之后,就使用如下的 ...