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条件): 返回由符合条件的节点组成的一行一列的结果表

 

 

 

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>   
'  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 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的所有信息

 

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 ) 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

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 ) 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

 

以上的相关内容就是对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

面试

2013-09-29 11:08:08

2015-08-03 10:21:04

设计模式表达

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

2011-05-18 15:48:49

MySQL数据库

2014-05-07 10:47:51

移动金融互联网金融GMIC

2018-01-15 10:45:43

社交网络互联网巨头百度

2020-12-16 10:43:44

PythonPyPy代码
点赞
收藏

51CTO技术栈公众号