SQL Server XML 入门的18句话

数据库 SQL Server
我们今天是要和大家一起讨论的是SQL Server XML 入门的18句话,以下就是正文的介绍,希望会给你带来一些帮助在此方面。

以下的文章主要描述的是SQL Server XML 入门的18句话,如果你对SQL Server XML 入门的18句话有兴趣的话,你就可以对以下的文章点击观看了,以下就是文章的详细内容介绍,望大家借鉴。

sql xml 入门:

 

 

 

1、xml: 能认识元素、属性和值

 

 

2、SQL Server xpath: 寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁)

 

 

语法格式,这些语法可以组合为条件:

 

"."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代,

 

"name"表示按名字查找,"@name"表示按属性查找

 

 

"集合[条件]" 表示根据条件取集合的子集,条件可以是

 

数 值:数字,last(),last()-数字 等

 

布尔值:position()<数字,@name='条件',name='条件'

 

条件是布尔值的时候可以合并计算:and or

 

 

3、xquery: 基于xpath标的准查询语言,SQL Server xquery包含如下函数

 

exist(xpath条件):返回布尔值表示节点是否存在

 

query(xpath条件):返回由符合条件的节点组成的新的SQL Server xml文档

 

value(xpath条件,数据类型):返回指定的标量值,xpath条件结果必须唯一

 

nodes(xpath条件): 返回由符合条件的节点组成的一行一列的结果表

 

 

 

  1. declare @ data xml   
  2. set @ data = '   
  3. <bookstore>   
  4. <book category="COOKING">   
  5. <title lang="en">Everyday Italian</title>   
  6. <author>Giada De Laurentiis</author>   
  7. <year>2005</year>   
  8. <price>30.00</price>   
  9. </book>   
  10. <book category="CHILDREN">   
  11. <title lang="jp">Harry Potter</title>   
  12. <author>J K. Rowling</author>   
  13. <year>2005</year>   
  14. <price>29.99</price>   
  15. </book>   
  16. <book category="WEB">   
  17. <title lang="en">XQuery Kick Start</title>   
  18. <author>James McGovern</author>   
  19. <author>Per Bothner</author>   
  20. <author>Kurt Cagle</author>   
  21. <author>James Linn</author>   
  22. <author>Vaidyanathan Nagarajan</author>   
  23. <year>2003</year>   
  24. <price>49.99</price>   
  25. </book>   
  26. <book category="WEB">   
  27. <title lang="cn">Learning XML</title>   
  28. <author>Erik T. Ray</author>   
  29. <year>2003</year>   
  30. <price>39.95</price>   
  31. </book>   
  32. </bookstore>   
  33. '  

 

测试语句,如果不理解语法请参考上面的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、等价于10

 

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、SQL Server XML中获取***本书的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的所有信息

 

  1. select   
  2. T . C . value ('title[1]' , 'varchar(max)' ) as title ,   
  3. T . C . value ('year[1]' , 'int' ) as year ,   
  4. T . C . value ('title[1]' , 'varchar(max)' )as title ,   
  5. T . C . value ('price[1]' , 'float' ) as price ,   
  6. T . C . value ('author[1]' , 'varchar(max)' ) as author1 ,   
  7. T . C . value ('author[2]' , 'varchar(max)' ) as author2 ,   
  8. T . C . value ('author[3]' , 'varchar(max)' ) as author3 ,   
  9. T . C . value ('author[4]' , 'varchar(max)' ) as author4   
  10. from @ data . nodes ('//book' ) as T (C ) 

18、获取不是日语(lang!="jp")且价格大于35的书的所有信息

 

select

 

  1. T . C . value ('title[1]' , 'varchar(max)' ) as title ,   
  2. T . C . value ('year[1]' , 'int' ) as year ,   
  3. T . C . value ('title[1]' , 'varchar(max)' )as title ,   
  4. T . C . value ('price[1]' , 'float' ) as price ,   
  5. T . C . value ('author[1]' , 'varchar(max)' ) as author1 ,   
  6. T . C . value ('author[2]' , 'varchar(max)' ) as author2 ,   
  7. T . C . value ('author[3]' , 'varchar(max)' ) as author3 ,   
  8. T . C . value ('author[4]' , 'varchar(max)' ) as author4   
  9. from @ data . nodes ('//book[./title[@lang!="jp"] and price>35 ]' ) as T (C ) 

 

以上的相关内容就是对18句话入门SQL Server XML的介绍,望你能有所收获。

【编辑推荐】

  1. SQL Server行转列的什么情况下被用?
  2. SQL Server获取表的容量很简单!
  3. SQL Server 2005两种快照隔离机制的不同之处
  4. SQL Server 2008 CDC功能的主要作用是什么?
  5. SQL Server 客户端的IP地址限制访问的破解

 

责任编辑:佚名 来源: 清华大学出版社
相关推荐

2015-02-05 09:39:03

程序猿程序员

2015-09-21 13:04:01

创业秘籍

2016-05-12 15:34:04

云计算

2023-09-05 23:34:52

Kubernetes云原生

2011-01-18 10:55:05

上司

2011-06-03 16:42:47

SEO

2010-08-02 16:40:43

面试

2015-08-03 10:21:04

设计模式表达

2013-09-29 11:08:08

2020-11-27 09:57:11

Python代码PyPy

2014-08-13 09:47:17

面试

2014-08-14 10:19:01

程序员

2010-03-29 11:55:12

无线上网报错

2015-08-03 11:07:36

数据可视化

2023-05-08 15:44:23

3D数字人

2023-09-06 15:23:30

Docker容器K8S

2018-01-15 10:45:43

社交网络互联网巨头百度

2014-05-07 10:47:51

移动金融互联网金融GMIC

2011-05-18 15:48:49

MySQL数据库

2020-12-16 10:43:44

PythonPyPy代码
点赞
收藏

51CTO技术栈公众号