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的更多相关文章
随机推荐
- VC版本的MakeObjectInstance把WNDPROC映射到类的成员函数
这段时间用VC封装Windows类库,没有MakeObjectInstance处理窗口消息确实不爽,又不想使用MFC的消息映射,这玩意的效率和美观只能呵呵. 至于MakeObjectInstance是 ...
- <未测>源码升级安装glibc和rpm升级glibc
源码升级安装glibc和rpm升级glibc http://jacklin9.spaces.live.com/blog/cns!A891B52E1182AFB2!346.entry http://bl ...
- pygame安装
进入这个网站 http://www.pygame.org/wiki/Compilation 可以选择不同系统的安装方法 其中ubuntu的安装命令是 #这是python .X #install dep ...
- ♫【JS基础】壹零零壹
如何面试一个前端开发者? function spacify(str) { return str.split('').join(' ') } console.log(spacify('hello wor ...
- 综合查询员工和datetime.now和datetime.today区别
一:综合查询图 二:EmployeeListWindow.cs代码 using System; using System.Collections.Generic; using System.Compo ...
- WPF的登录界面的排版
一:截图 二:XAML代码 <Window x:Class="wpf练习.登录窗体" xmlns="http://schemas.microsoft.com/win ...
- arcgis数据文件使用
dem数据打开,保存,使用 打开
- [jAudio] JAVA上经典特征提取工具
1.下载Jar包后引入 现在的问题是jAudio通常是给人UI进行操作的,直接使用怎么办? 看了源码,发现特征提取是通过类之间交叉调用实现的,是否有办法整合一下?
- 使用jquery trigger 触发a标签的click事件取代window.open方法
var ohtml='<div class="friend-dialog tac pt15 pb20">'+ '<div class="f-h32&qu ...
- RabbitMQ-优先级(priority)队列/消息
就像在日常生活中,事情有轻重缓急一样.我们对于需要处理的消息也有这样的需求. 例如重要的消息我要尽快的得到处理,当然我们可以给重要的消息开个“VIP通道”,但是VIP数量很多,并且VIP也分层次呢? ...