如何快速入门SQL Server XML查询

61次阅读
没有评论

共计 3170 个字符,预计需要花费 8 分钟才能阅读完成。

本篇文章给大家分享的是有关如何快速入门 SQL Server XML 查询,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

sql xml 入门: –by 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)

以上就是如何快速入门 SQL Server XML 查询,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计3170字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)