016_openxml_forxml
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的更多相关文章
随机推荐
- Nashorn 在JDK 8中融合Java与JavaScript之力
从JDK 6开始,Java就已经捆绑了JavaScript引擎,该引擎基于Mozilla的Rhino.该特性允许开发人员将JavaScript代码嵌入到Java中,甚至从嵌入的JavaScript中调 ...
- My ECMAScript 7 wishlist
With ECMAScript 6 now feature complete, any further changes to the core of JavaScript will happen in ...
- Election Time
Election Time Time Limit: 1000MS Memory limit: 65536K 题目描述 The cows are having their first election ...
- 用Java实现非阻塞通信
用ServerSocket和Socket来编写服务器程序和客户程序,是Java网络编程的最基本的方式.这些服务器程序或客户程序在运行过程中常常会阻塞.例如当一个线程执行ServerSocket的acc ...
- 【Linux】鸟哥的Linux私房菜基础学习篇整理(四)
1. VI按键说明.(1)移动光标的方法h或向左箭头:光标向左移动一个字符:j或向下箭头:光标向下移动一个字符:k或向上箭头:光标向上移动一个字符:l或向右箭头:光标向右移动一个字符:进行多次移动,如 ...
- JFS 文件系统概述及布局分析
JFS 文件系统概述及布局分析 日志文件系统如何缩短系统重启时间 如果发生系统崩溃,JFS 提供了快速文件系统重启.通过使用数据库日志技术,JFS 能在几秒或几分钟之内把文件系统恢复到一致状态,而非日 ...
- STL中的Traits编程技法
最近在看读<STL源码剖析>,看到Traits编程技法这节时,不禁感慨STL源码作者的创新能力.那么什么是Traits编程技法呢?且听我娓娓道来: 我们知道容器的许多操作都是通过迭代器展开 ...
- [转]是String,StringBuffer还是StringBuilder?
原文链接. 相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天我在这里重新把这个概念给大家复习一下,顺便牵 ...
- POJ 2594 Treasure Exploration(带交叉路的最小路径覆盖)
题意: 派机器人去火星寻宝,给出一个无环的有向图,机器人可以降落在任何一个点上,再沿着路去其他点探索,我们的任务是计算至少派多少机器人就可以访问到所有的点.有的点可以重复去. 输入数据: 首先是n和 ...
- ubuntu server配置xmanager
ubuntu server配置xmanager ubuntu是典型的多用户多任务操作系统,通过XDMCP方式可以轻松的实现远程的多用户同时登录ubuntu任务. www.2cto.com ...