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地址限制访问的破解

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/253707.html<

(0)
管理的头像管理
上一篇2025-04-30 00:57
下一篇 2025-04-30 00:58

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注