在SQLServer中用XQuery分解XML数据

  在举例说明如何分解上一篇文章中的数据时,我们首先了解一下XQuery和它在SQL Server 2005中为开发者提供的功能。

  XQuery介绍

  XQuery,也称作XML Query,是一种查询XML数据的语言,允许你提取所需的节点和元素。它由W3C定义,可用于今天的大多数主流数据库引擎中,如Oracle、DB2和SQL Server。

  SQL Server 2005 XQuery函数

  下面的四个函数是SQL Server 2005中的XQuery函数。(注意,XML、XQuery语句和下面的函数都区分大小写。例如,SQL编译器接受XML数据中的.exist,但拒绝.EXIST或.Exist。)

  xml.exist

  这个方法根据一个XML节点上的搜索表达式返回一个布尔值。例如,列表A中XML代码片段中的语句将返回1(真):

  SELECT @x.exist('/christmaslist/person[@gift = "socks"]')

  这个语句返回0(假):

  SELECT @x. exist ('/christmaslist/zach')

  由于“Socks”一词被封套,这个语句将返回0(假)。

  SELECT @x.exist('/christmaslist/person[@gift = "socks"]')

  xml.value

  这个方法接受一个XQuery语句并返回一个单独值。使用列表A中同样的XML代码片段,不可以使用VALUE函数生成“betty”值,如下所示:

  SELECT @x.value('/christmaslist[1]/person[1]/@name', 'VARCHAR(20)')

  而XQuery生成“zach”值。

  SELECT @x.value('/christmaslist[1]/person[2]/@name', 'VARCHAR(20)')

  xml.query

  这个方法接受一个XQuery并返回一个XML数据类型的实例。可以按需要将这些查询简单或复杂化,下面是一个简单的例子:

  SELECT @x.query('/christmaslist/person')

  它返回XML文件:

  以下是引用片段:
<person name="betty" gift="camera" />
<person name="zach" gift="elmo doll" />
<person name="brad" gift="socks" />

  xml.nodes

  在你需要将一个XML数据类型变量中的数据分解到关系数据中时,这个方法十分有用。这个方法接受一个XQuery语句作为参数,并返回一个包含XML变量逻辑标量数据的行集。列表B中的查询利用上面定义的XML变量,并将数据分解到一个结果集中,它显示在XML变量中定义的人物姓名。

  修改OPENXML存储过程

  现在我来说明如何修改上周的OPENXML存储过程,使其可以应用XQuery功能。首先,我往XML变量中加载一些数据。如列表C所示。我们可以建立一个接受XML参数的过程,再应用XQuery函数把XML文件中的数据插入一个表中,而不必应用OPENXML。如列表D所示。

  最初在数据库中应用XML似乎有些难于处理,还要花一些时间习惯使用XQuery和Xpath查询。但是,经过一段时间的学习以后,你就会发现在数据库中应用XML数据相当实用。

  例如,在上述存储过程中应用XML数据,你只需调用一次数据库,而不必像典型存储过程编程那样调用N次数据库。这二者似乎区别不大,但对一个繁忙的系统而言,应用XML数据会有很大益处。而且,应用XQuery而非OPENXML还会显著提高性能,对小型XML文件更是如此。

时间: 2024-10-29 20:22:17

在SQLServer中用XQuery分解XML数据的相关文章

在SQL Server 2005中用XQuery分解XML数据

本文讨论SQL Server 2005的新功能,它允许你将XML数据分解到关系格式中,而不必耗用太多内存.我们首先了解一下XQuery和它在SQL Server 2005中为开发者提供的功能. XQuery介绍 XQuery,也称作XML Query,是一种查询XML数据的语言,允许你提取所需的节点和元素.它由W3C定义,可用于今天的大多数主流数据库引擎中,如Oracle.DB2和SQL Server. SQL Server 2005 XQuery函数 下面的四个函数是SQL Server 20

Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据

原文:Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据 XQuery 是一个浏览/返回XML实例的标准语言. 它比老的只能简单处理节点的XPath表达式更丰富. 你可以同XPath一样使用.或是遍历所有节点,塑造XML实例的返回等. 作为一个查询语言, 你需要一个查询处理引擎. SQL Server 数据库通过XML数据类型方法的T-SQL 语句来处理XQuery. SQL Server 并不支持所有的X

使用XQuery查询DB2 XML数据

关于XQuery XQuery 在很多关键方面都与 SQL 有所不同,这很大程度上是因为这两种语言是针对两种具有不同特征的数据模型而设计的.XML 文档包含层次结构,并且有其固有的顺序.而基于 SQL 的数据库管理系统所支持的表格数据结构是平面的(flat),并且是基于集合的:因此,行之间不存在顺序. 这两种数据模型的不同导致它们各自的查询语言有很多基本的不同.例如,XQuery 支持路径表达式,以允许程序员在 XML 的层次结构中导航,而纯 SQL(没有 XML 扩展)则不支持.XQuery

使用XQuery查询DB2 XML数据_DB2

正在看的db2教程是:使用XQuery查询DB2 XML数据.关于 XQuery XQuery 在很多关键方面都与 SQL 有所不同,这很大程度上是因为这两种语言是针对两种具有不同特征的数据模型而设计的.XML 文档包含层次结构,并且有其固有的顺序.而基于 SQL 的数据库管理系统所支持的表格数据结构是平面的(flat),并且是基于集合的:因此,行之间不存在顺序. 这两种数据模型的不同导致它们各自的查询语言有很多基本的不同.例如,XQuery 支持路径表达式,以允许程序员在 XML 的层次结构中

sql server中使用T-Sql操作Xml数据

一.前言 SQLServer 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB). 用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中. 随着SQL Server 对XML字段的支持,相应的,T-S

用XML数据岛结合Dom制作通讯录

一般情况下,如果要为网站提供一个通讯录程序,需要使用CGI结合后台数据库技术,这对WEB服务器的要求比较高,在很多不提供数据库功能的虚拟主机上甚至无法实现.当然,我们还可以采用TXT文本替代数据库,但TXT文本是比较难操作的,我们必须一行一行的读取判断,还要用分隔字符串实现字段分离,无法进行复杂运算. 现在,我们可以使用"可扩展的标记语言 (XML)" 来保存通讯录的数据,从而体现出XML的优点:表现数据的结构化方法,对于保存许多关系型数据结构的文件很有帮助. 一.基本原理: 在Mic

SQL Server 2005的XML数据修改语言

作为对XQuery语言的扩展,XML DML为XML数据操作提供了更大的灵活性,而不再仅仅是对XML数据进行一些查询操作.通过XML DML,用户可以像操作关系表一样对XML中的节点内容进行插入.更新和删除操作.XML DML需要通过xml数据类型的modify方法进行调用. 1.insert insert用于将Expression1标识的一个或多个节点作为Expression2标识的节点的子节点或同级节点插入.语法格式如下: insert Expression1 ( {as first | a

浅析.NET下XML数据访问新机制

xml|访问|数据 一.前言: XML作为Web服务的基石,其重要性自然是不言而喻的,它正日益被开发人员所重视.同时随着各类新兴开发工具的推出,XML数据的访问机制也变得越来越灵活多样..Net框架为开发人员提供了几种新的XML数据访问机制,每种机制都提供了不同的XML数据访问支持.所以对于开发人员而言,选择正确合适的XML数据访问机制变得相当重要,它会影响到项目开发的复杂度以及应用程序的整体效率. 大体来讲,.Net框架为开发人员提供了ADO.Net中的数据集XML数据访问机制和SqlData

使用SQL查询DB2 9中的XML数据

虽然 DB2 的混合体系结构与之前的版本有很大的不同,但是要利用它的新 XML 功能并不难.如果您已经熟悉 SQL,那么很快就可以将这方面的技能转化到对存储在 DB2 中的本地 XML 数据的处理上.通过本文就可以知道如何实现这一点. DB2 Viper(就是DB2 9)中的 XML 特性包括新的存储管理.新的索引技术以及对查询语言的支持.在本文中,学习如何使用 SQL 或带 XML 扩展的 SQL(SQL/XML)查询 DB2 XML 列中的数据.接下来的文章将讨论 DB2 中新引入的对新兴的