仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 984|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL编程:sql xml进门:xpath和xquery

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:15:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于update操作,event中依次记录旧行,新行的值。</p>/*
sqlxml进门:
--byjinjazz
--http://blog.csdn.net/jinjazz

1、xml:能熟悉元素、属性和值

2、xpath:寻址言语,相似windows目次的查找(没用过dir命令的话就往面壁)

语法格局,这些语法能够组合为前提:
"."暗示本人,".."暗示父亲,"/"暗示儿子,"//"暗示儿女,
"name"暗示按名字查找,"@name"暗示按属性查找

"汇合[前提]"暗示依据前提取汇合的子集,前提能够是
数值:数字,last(),last()-数字等
布尔值:position()<数字,@name=前提,name=前提
前提是布尔值的时分能够兼并盘算:andor

3、xquery:基于xpath标的准查询言语,sqlserverxquery包括以下函数
exist(xpath前提):前往布尔值暗示节点是不是存在
query(xpath前提):前往由切合前提的节点构成的新的xml文档
value(xpath前提,数据范例):前往指定的标量值,xpath前提了局必需独一
nodes(xpath前提):前往由切合前提的节点构成的一行一列的了局表
*/

declare@dataxml
set@data=
<bookstore>
<bookcategory="COOKING">
<titlelang="en">EverydayItalian</title>
<author>GiadaDeLaurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<bookcategory="CHILDREN">
<titlelang="jp">HarryPotter</title>
<author>JK.Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<bookcategory="WEB">
<titlelang="en">XQueryKickStart</title>
<author>JamesMcGovern</author>
<author>PerBothner</author>
<author>KurtCagle</author>
<author>JamesLinn</author>
<author>VaidyanathanNagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<bookcategory="WEB">
<titlelang="cn">LearningXML</title>
<author>ErikT.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"]orprice>35])
--12、猎取title的lang="en"且price>35的第一book的(第一个)title
select@data.query(//book[./title[@lang="en"]andprice>35]).value((book/title)[1],varchar(max))
--13、等价于10
select@data.value((//book[./title[@lang="en"]andprice>35]/title)[1],varchar(max))
--14、猎取title的lang="en"且price>35的第一book的(第一个)title的lang属性
select@data.value(((//book[@category="WEB"andprice>35]/title)[1]/@lang)[1],varchar(max))
--15、猎取第一本书的title
selectTab.Col.value((book/title)[1],varchar(max))astitle
from@data.nodes(bookstore)asTab(Col)
--16、猎取每本书的第一个author
selectTab.Col.value(author[1],varchar(max))astitle
from@data.nodes(//book)asTab(Col)
--17、猎取一切book的一切信息
select
T.C.value(title[1],varchar(max))astitle,
T.C.value(year[1],int)asyear,
T.C.value(title[1],varchar(max))astitle,
T.C.value(price[1],float)asprice,
T.C.value(author[1],varchar(max))asauthor1,
T.C.value(author[2],varchar(max))asauthor2,
T.C.value(author[3],varchar(max))asauthor3,
T.C.value(author[4],varchar(max))asauthor4
from@data.nodes(//book)asT(C)
--18、猎取不是日语(lang!="jp")且代价年夜于35的书的一切信息
select
T.C.value(title[1],varchar(max))astitle,
T.C.value(year[1],int)asyear,
T.C.value(title[1],varchar(max))astitle,
T.C.value(price[1],float)asprice,
T.C.value(author[1],varchar(max))asauthor1,
T.C.value(author[2],varchar(max))asauthor2,
T.C.value(author[3],varchar(max))asauthor3,
T.C.value(author[4],varchar(max))asauthor4
from@data.nodes(//book[./title[@lang!="jp"]andprice>35])asT(C)

支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-19 06:18:59 | 只看该作者
是要和操作系统进行Socket通讯的场景。否则建议慎重!
深爱那片海 该用户已被删除
板凳
发表于 2015-1-27 05:56:59 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
小魔女 该用户已被删除
地板
发表于 2015-2-5 03:31:53 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
山那边是海 该用户已被删除
5#
发表于 2015-2-11 03:44:55 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
小女巫 该用户已被删除
6#
发表于 2015-3-11 00:09:18 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
兰色精灵 该用户已被删除
7#
发表于 2015-3-17 16:22:56 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
飘灵儿 该用户已被删除
8#
发表于 2015-3-24 13:01:44 | 只看该作者
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 19:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表