/*
sql xml 入门:
--by jinjazz
--http://blog.csdn.net/jinjazz
1、xml: 能认识元素、属性和值
2、xpath: 寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁)
语法格式,这些语法可以组合为条件:
"."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代,
"name"表示按名字查找,"@name"表示按属性查找
"集合[条件]" 表示根据条件取集合的子集,条件可以是
数 值:数字,last(),last()-数字 等
布尔值:position()<数字,@name='条件',name='条件'
条件是布尔值的时候可以合并计算:and or
3、xquery: 基于xpath标的准查询语言,sqlserver xquery包含如下函数
exist(xpath条件):返回布尔值表示节点是否存在
query(xpath条件):返回由符合条件的节点组成的新的xml文档
value(xpath条件,数据类型):返回指定的标量值,xpath条件结果必须唯一
nodes(xpath条件): 返回由符合条件的节点组成的一行一列的结果表
*/
declare @data xml
set @data='
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="jp">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="cn">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
'
--测试语句,如果不理解语法请参考上面的xpath规则和xquery函数说明
--1、文档
select @data
--2、任意级别是否存在price节点
select @data.exist('//price')
--3、获取所有book节点
select @data.query('//book')
--4、获取所有包含lang属性的节点
select @data.query('//*[@lang]')
--5、获取第一个book节点
select @data.query('//book[1]')
--6、获取前两个book节点
select @data.query('//book[position()<=2]')
--7、获取最后一个book节点
select @data.query('//book[last()]')
--8、获取price>35的所有book节点
select @data.query('//book[price>35]')
--9、获取category="WEB"的所有book节点
select @data.query('//book[@category="WEB"]')
--10、获取title的lang="en"的所有book节点
select @data.query('//book/title[@lang="en"]')
--11、获取title的lang="en"且 price>35的所有book节点
select @data.query('//book[./title[@lang="en"] or price>35 ]')
--12、获取title的lang="en"且 price>35的第一book的(第一个)title
select @data.query('//book[./title[@lang="en"] and price>35 ]').value('(book/title)[1]','varchar(max)')
--13、等价于12
select @data.value('(//book[./title[@lang="en"] and price>35 ]/title)[1]','varchar(max)')
--14、获取title的lang="en"且 price>35的第一book的(第一个)title的lang属性
select @data.value('((//book[@category="WEB" and price>35 ]/title)[1]/@lang)[1]','varchar(max)')
--15、获取第一本书的title
select Tab.Col.value('(book/title)[1]','varchar(max)') as title
from @data.nodes('bookstore')as Tab(Col)
--16、获取每本书的第一个author
select Tab.Col.value('author[1]','varchar(max)') as title
from @data.nodes('//book')as Tab(Col)
--17、获取所有book的所有信息
select
T.C.value('title[1]','varchar(max)') as title,
T.C.value('year[1]','int') as year,
T.C.value('title[1]','varchar(max)')as title,
T.C.value('price[1]','float') as price,
T.C.value('author[1]','varchar(max)') as author1,
T.C.value('author[2]','varchar(max)') as author2,
T.C.value('author[3]','varchar(max)') as author3,
T.C.value('author[4]','varchar(max)') as author4
from @data.nodes('//book') as T(C)
--18、获取不是日语(lang!="jp")且价格大于35的书的所有信息
select
T.C.value('title[1]','varchar(max)') as title,
T.C.value('year[1]','int') as year,
T.C.value('title[1]','varchar(max)')as title,
T.C.value('price[1]','float') as price,
T.C.value('author[1]','varchar(max)') as author1,
T.C.value('author[2]','varchar(max)') as author2,
T.C.value('author[3]','varchar(max)') as author3,
T.C.value('author[4]','varchar(max)') as author4
from @data.nodes('//book[./title[@lang!="jp"] and price>35 ]') as T(C)
转摘:http://topic.csdn.net/u/20090813/17/06951CF3-CD2C-4509-AC0B-9B3BED28EA57.html
分享到:
相关推荐
18句话入门SQLServer XML查询[发个总结贴].mht
SQL Server 提供了一系列功能来处理 XML 数据,包括通过 XPath 查询 XML、提取 XML 的部分值等。 ### SQL Server XML处理的关键语法 #### 1. 基本XML声明与赋值 在 SQL Server 中,可以使用 DECLARE 语句来声明 ...
提高sql server xml字段的查询速度的几种方法,其中使用索引关键字方法在模糊查询中相当实用。
在SQL Server中,读取XML文件并对其进行处理是数据库管理员和开发者经常遇到的任务。XML作为一种通用的数据交换格式,被广泛用于存储和传输结构化数据。然而,在SQL Server 2000中,处理XML文件并不像导出数据那样...
18.SQL Server 2014子查询EXISTS.mp4 19.SQL Server 2014返回记录排序.mp4 2.SQL Server 2014硬件和软件要求.mp4 20.SQL Server 2014关联查询.mp4 21.SQL Server 2014聚合函数AVG() SUM().mp4 22.SQL Server ...
根据给定的文件标题、描述、标签以及部分内容,本文将详细介绍如何在SQL Server 2005 和 2008 中操作XML数据类型,并简要介绍与之相关的C# XML操作方法。 ### 一、SQL Server 2005/2008 XML 数据类型操作 #### 1. ...
《Pro SQL Server 2008 XML》是针对SQL Server 2008数据库系统的一本高级教程,主要聚焦于XML在SQL Server中的应用。XML(eXtensible Markup Language)是一种广泛使用的标记语言,它允许数据以结构化的方式进行存储...
总结,OpenXML 是 SQL Server 处理 XML 数据的强大工具,它允许开发者灵活地将 XML 文档转换为关系型数据,方便在 SQL Server 中进行查询、更新和存储。尽管现代的 SQL Server 版本推荐使用 XQuery 和 FOR XML 来...
在SQLServer中,内置的XML支持是数据库管理系统的一项强大特性,它允许用户存储、查询、处理和传输XML数据。XML(eXtensible Markup Language)作为一种标准的数据交换格式,广泛应用于不同系统之间的数据交互和复杂...
18.SQL Server 2014子查询EXISTS.mp4 19.SQL Server 2014返回记录排序.mp4 20.SQL Server 2014关联查询.mp4 21.SQL Server 2014聚合函数AVG() SUM().mp4 22.SQL Server 2014聚合函数MIN() MAX().mp4 23.SQL ...
SQL Server作为一款广泛应用的关系型数据库管理系统,提供了丰富的功能,其中之一就是能够生成XML格式的数据,这在数据迁移、报表生成、Web服务等场景中非常实用。本篇文章将详细介绍如何在VB(Visual Basic)环境中...
其次,SQL Server 2005提供了一个强大的XQuery引擎,允许用户通过SQL查询语言执行XQuery表达式来检索和处理XML数据。XQuery是一种标准化的查询语言,专门用于处理XML数据,它的引入大大简化了在SQL Server中处理XML...
XML导入SQLServer工具,配置简单,支持大批量导入到SQLServer。
根据提供的文件信息,我们可以深入探讨如何使用C#与SQL Server结合来实现XML数据的读取与写入。这里的关键在于理解如何通过ADO.NET框架来连接SQL Server数据库,并从中获取数据,然后将这些数据以XML格式进行存储和...
工作在任何基于SQL Server XML和Web应用架构的背景下:逻辑架构和物理架构。逻辑架构主要关注应用程序的设计和功能,而物理架构则涉及其实现和部署的技术细节。 在Duwamish Books, Phase 4和Duwamish Online这两个...
《SQL Server从入门到精通》是一本专门为初学者和进阶者设计的全面教程,旨在帮助读者掌握SQL Server 2008的核心概念和技术。这本书由明日科技编写,提供了扫描的完整版,使得读者可以方便地在线查阅或下载学习。 ...
SQL Server 从入门到精通-pdf
SQL Server 2005 XML应用开发.isoSQL Server 2005 XML应用开发.iso