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. 【Java】详解Java解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...

  2. Winform  隐藏程序窗口

    internal class HideOnStartupApplicationContext : ApplicationContext { private Form mainFormInternal; ...

  3. 动态规划(奇异状态):HNOI 2001 产品加工

     产品加工 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加 ...

  4. 数据结构(脑洞题,BIT):COGS 2394. 比赛

    比赛 时间限制:1 s   内存限制:256 MB [题目描述] n(n≤100000)个人编号为0到n-1,每人都有一个能力值,大小在0到n-1之间,各不相同,他们之间有c场比赛,每场比赛指定一个区 ...

  5. 数学:UVAoj 11174 Stand in a Line

    Problem J Stand in a Line Input: Standard Input Output: Standard Output All the people in the bytela ...

  6. 【动态规划】【二分】【最长上升子序列】Vijos P1028 魔族密码

    题目链接: https://vijos.org/p/1028 题目大意: 给N个字符串(N<=2000),求能组成词链的单词最多有几个. 如果在一个由一个词或多个词组成的表中,除了最后一个以外, ...

  7. DNA repair - HDU 2457(自动机+dp)

    题目大意:给你N个DNA的串,也就是至包含'A','T','G','C'四种碱基的,这些给定的串都是带有遗传病的,然后给你一个不会超过1000的串,问你至少几个地方才能让这个串不包含遗传病,如果不论怎 ...

  8. 一步一步学android之事件篇——单击事件

    在使用软件的时候单击事件必不可少,比如我想确定.取消等都需要用户的单击,所有的单击事件都是由View.OnClickListener接口来进行处理的,接口定义如下: public static int ...

  9. Java中的字符串流的读取和写入(创建文件并判断重复账户)

    各位我又来了!!哎!好心酸!我还没注册到三天!!没法登上博客的首页!!心累!! import java.io.BufferedOutputStream; import java.io.Buffered ...

  10. Atitit.hibernate体系结构大总结

    Atitit.hibernate体系结构大总结 1. 4.1 hibernate基础语义 80  4.1.1 configuration 80  4.1.2 sessionfactory 81  4. ...