1. 云栖社区>
  2. 技术文集>
  3. 列表>
  4. 正文

在SQLServer中用XQuery分解XML数据

作者:用户 来源:互联网 时间:2016-09-19 11:14:25

xml数据应用存储过程语句一个sqlserver修改函数

在SQLServer中用XQuery分解XML数据 - 摘要: 本文讲的是在SQLServer中用XQuery分解XML数据,   在举例说明如何分解上一篇文章中的数据时,我们首先了解一下XQuery和它在SQL Server 2005中为开发者提供的功能。   XQuery介

  在举例说明如何分解上一篇文章中的数据时,我们首先了解一下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文件更是如此。



以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有 的相关内容,欢迎继续使用右上角搜索按钮进行搜索xml , 数据 , 应用 , 存储过程 , 语句 , 一个 sqlserver修改函数 sqlserver xquery、xml xquery、sqlserver xml、sql server xml、sql server xml 查询,以便于您获取更多的相关知识。

mybatis +sqlserver-mybatis 的sql中用驼峰方式起了个别名,输出后变成了小写

问题描述 mybatis 的sql中用驼峰方式起了个别名,输出后变成了小写 如题,这是mybatis的bug吗还是要在配置文件中设置?感谢 解决方案 任何数据库sql语句中都是不分...

对比DB2 9和DB2 V8.x中的XML功能_DB2

...分开的。还引入了基于 XML 模式的 XML 索引技术,并支持 XQuery 和 SQL/XML 作为查询和发布 XML 数据的语言。 DB2 UDB Version 8.x 中的 XML 支持 DB2 8.x 使用 SQL/XML 和 DB2 XML Extender 向底层关系数据提供 XML 功能。DB2 XML Extender 提供许多用户定...

利用DB2 9原生XML和PHP来简化XML应用程序

...易程度将 DB2 原生 XML 功能与 PHP 应用程序(包括用 PHP 和 XQuery 编写的 Web 服务)集成的容易程度使用 XQuery、存储过程和视图将业务逻辑和数据转换放到数据库中。在该情景中使用的 DB2 XML 功能将包含以下方面:按分列结构在列...

xquery2

在Java环境中使用 XQuery来源:ibm 发布时间:2008-07-24 收藏 投稿 字体:【大 中 小】 将 XQJ JAR 添加到类路径 现在需要修改类路径,使其包含 XQuery JAR 和存储在 lib 目录下 ddxq.jar 中的 XQJ 类。这不是 原来下载的 JAR,而是在上面解...

类似查询mysql数据库的查询XML的JS类

... string=string.replace(/&/g, '&'); 75 return string; 76 }, 77 xQuery=function(str,node){ 78 return typeof(node)!="undefined"? node.selectNodes(str):_root.dbObj.selectNodes(str); 79 }; 80 81 _root.load=function(pt,async){ 82 var pt=typeof(pt)!="undefined"?pt:_root.dbpa...

前三篇
后三篇