当前位置: 首页 > news >正文

针对 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。

相关文章:

  • C#谜题86: 有害的括号垃圾
  • 思科新logo
  • [转载]asp.net中page对象生命周期和各事件执行顺序
  • SQL Server连接中三个常见的错误分析(转)
  • 微软 DLinq技术来临前的国内 .NET 的 ORM 发展之局势
  • 第二篇 收购与发展
  • 一个小网工的笔记1
  • “应用”按钮,一个让人比较郁闷的设计
  • 越来越冷了
  • 闲谈: 测试报告系统
  • 美国SkillSoft巨资收购NETg公司,巩固全球霸主地位
  • 可爱的扇贝
  • UUID and GUID
  • Browsers Series_5_Safari
  • 天之痕中文硬盘版@BT影视天堂@猪猪乐园@只发精品的解压密码
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Angular 响应式表单 基础例子
  • JAVA_NIO系列——Channel和Buffer详解
  • js写一个简单的选项卡
  • leetcode98. Validate Binary Search Tree
  • mysql常用命令汇总
  • React-Native - 收藏集 - 掘金
  • SQLServer之创建显式事务
  • Sublime Text 2/3 绑定Eclipse快捷键
  • uva 10370 Above Average
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 因为阿里,他们成了“杭漂”
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (C语言)fgets与fputs函数详解
  • (二)c52学习之旅-简单了解单片机
  • (四)c52学习之旅-流水LED灯
  • (一)基于IDEA的JAVA基础1
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转载)Linux网络编程入门
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net 简单实现MD5
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • /etc/fstab和/etc/mtab的区别
  • :=
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [Angular 基础] - 指令(directives)
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [C++]类和对象【下】
  • [C语言]——柔性数组
  • [docker]docker网络-直接路由模式
  • [Flexbox] Using order to rearrange flexbox children