针对 xml 数据类型的 XQuery (摘自SQL Server 2005 联机丛书)

Transact-SQL 支持用于查询 xml 数据类型的 XQuery 语言的子集。此 XQuery 实现符合 2004 年 7 月的 XQuery 工作草案。该语言正在由 World Wide Web 联合会 (W3C) 开发,所有主要数据库供应商和 Microsoft 也参与此开发。由于 W3C 规范在成为 W3C 建议之前还可能进行修订,因此此实现可能与最终的建议有所不同。本主题概要介绍了 SQL Server 2005 中所支持的 XQuery 子集的语义和语法。

有关详细信息,请参阅 W3C XQuery 1.0 语言规范

XQuery 是一种可以查询结构化或半结构化 XML 数据的语言。由于 SQL Server 2005 Database Engine 中提供 xml 数据类型支持,因此可以将文档存储在数据库中,然后使用 XQuery 进行查询。

XQuery 基于现有的 XPath 查询语言,并支持更好的迭代、更好的排序结果以及构造必需的 XML 的功能。XQuery 在 XQuery 数据模型上运行。此模型是 XML 文档以及可能为类型化也可能为非类型化的 XQuery 结果的抽象概念。类型信息基于 W3C XML 架构语言所提供的类型。如果没有可用的类型化信息,XQuery 将按照非类型化处理数据。这与 XPath 1.0 版处理 XML 的方式相似。

若要查询 xml 类型的变量或列中存储的 XML 实例,可以使用 xml 数据类型方法。例如,可以声明一个 xml 类型的变量,然后使用 xml 数据类型的 query() 方法来查询此变量。

DECLARE @x xml
            SET @x = '<ROOT><a>111</a></ROOT>'
            SELECT @x.query('/ROOT/a')

在下面的示例中,查询是针对 AdventureWorks 数据库中 ProductModel 表的 xml 类型的 Instructions 列指定的。

SELECT Instructions.query('declare namespace AWMI="http://schemas.microsoft.com
/sqlserver/2004/07/adventure-works/ProductModelManuInstructions"; /AWMI:root/AWMI:Location[@LocationID=10] ') as Result FROM Production.ProductModel WHERE ProductModelID=7

XQuery 包含命名空间声明(declare namespace AWMI=...)和查询表达式(/AWMI:root/AWMI:Location[@LocationID=10])。

请注意,XQuery 是针对 xml 类型的 Instructions 列指定的。XML 数据类型的 query() 方法(XML 数据类型)用于指定 XQuery。

posted @ 2006-08-16 15:23  火火  阅读(969)  评论(0编辑  收藏  举报