在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 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-09-18 22:38:49

在SQL Server 2005中用XQuery分解XML数据的相关文章

在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语句和下面的

面向Microsoft SQL Server 2005的本机XML Web Services概述

了解如何借助SQL Server 2005(以前称为"Yukon")中的SOAP/HTTP来设置和使用XML Web Services.文中还包含了相关的示例.为了从本文最大地受益,应该对Web服务技术具有基本的了解,包括HTTP.SOAP和WSDL.它包含的具体内容有:要求.HTTP终结点.创建HTTP终结点.身份验证与安全.WSDL.SOAP RPC:方法调用.批处理:即席查询和管理. 简介 Microsoft SQL Server 2005 提供了一个标准机制,用于使用 SOAP

SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易

目录 CLR 用户定义函数模式匹配数据提取模式存储匹配在匹配项中进行数据提取总结 尽管 T-SQL 对多数数据处理而言极其强大,但它对文本分析或操作所提供的支持却很少.尝试使用内置的字符串函数执行任何复杂的文本分析会导致难于调试和维护的庞大的函数和存储过程.有更好的办法吗?   实际上,正则表达式提供了更高效且更佳的解决方案.它在比较文本以便标识记录方面的益处显而易见,但是它的用途并不仅限于此.我们将介绍如何执行各种简单或令人惊异的任务,这些任务在 SQL Server 2000 中被视为不切实

SQL Server 2005中查询并修改数据的不合理设计

在SQL Server 2000中,我们想在数据库表中直接修改数据,一般的操作方法是:在SQL Server 企业管理中,选择相应的表,点击右键,在"打开表"中选择"查询",在SQL编辑窗口中输入SQL语句找到要修改的记录,然后在结果窗口中直接修改相应的字段. 那在SQL Server 2005中,需要怎样操作呢? 在SQL Server Management Studio中,找到相应的表,点击右键,选择"Open Table",然后点击&quo

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

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

SQL Server 2005 返回修改后的数据

  今天在公司看到同事写了个SQL2005的新特性的文章,觉得很实用,在这里和大家分享下.原著作权不属于我. 这种技术主要是用到了inserted和deleted虚拟表,这两张表相信大家都很熟悉.以前我们主要是在触发器中使用. 我们先来复习下这两个表: Inserted和Deleted这两个表是逻辑表,并且这两个表是由系统管理的,存储在内存中,不是存储在数据库中,因此,不允许用户直接对其修改. 这两个表的结构与被该触发器作用的表在相同的表结构.这两个表是动态驻留在内存中的,当触发器工作完成,它们

Microsoft SQL Server 2005 中的 XML 支持(1)

本文探讨 SQL Server 2005 中内置的 XML 支持.描述了这种支持如何与 .NET 框架 V2.0 和本机代码(例如 OLEDB 和 SQLXML)均支持的客户端编程相集成. 一.简介 可扩展标记语言 (XML) 作为一种与平台无关的数据表示形式已被广泛采用.它对于在松散耦合且完全不同的系统,以及各种企业到企业 (B2B) 应用和工作流范畴内交换信息是很有用的.数据交换已成为 XML 技术的主要驱动力之一.. XML 在企业应用程序中的使用正日益广泛,它主要用于对半结构化和非结构化

Microsoft SQL Server 2005 中的 XML 选项

本文介绍 Visual Studio 2005/SQL Server 2005 环境中用于处理 XML 数据的三个选项,包括使用方案以及指导用户在各选项之间进行选择的指南. 一.System.Xml.SQLXML 和 XML 数据类型简介 本节简要介绍 Microsoft SQL Server 2000 中提供的 XML 支持的发展历史,并概要介绍 Microsoft Visual Studio 2005/SQL Server 2005 环境中提供的用于处理 XML 和关系数据的三个选项.这三个

从 SQL Server 2005 中处理 XML

一.简介 Microsoft SQL Server 2005 中的重大更改之一是包含了 XML 数据类型.此数据类型是第一类类型,就像 INT 或 VARCHAR 一样,而且 SQL Server 2005 允许使用一系列 XML 特定的函数对此数据类型进行就地查询和处理.它还支持存储数据库中的 XML 架构的集合,从而启用基于数据库的架构验证.另外,SQL Server 2005 大大地扩展了 XML 组合(SELECT ... FOR XML 语句)的功能,扩展了 OpenXML() XML