/*1、xml:        能认识元素、属性和值2、xpath:    寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁)语法格式,这些语法可以组合为条件:"."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代,"name"表示按名字查找,"@name"表示按属性查找"集合[条件]" 表示根据条件取集合的子集,条件可以是数  值:数字,last(),last()-数字 等布尔值:position()<数字,@name='条件',name='条件'条件是布尔值的时候可以合并计算:and or3、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 titlefrom @data.nodes('bookstore')as Tab(Col)
--16、获取每本书的第一个author
select Tab.Col.value('author[1]','varchar(max)') as titlefrom @data.nodes('//book')as Tab(Col)
--17、获取所有book的所有信息
selectT.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的书的所有信息
selectT.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)

转载于:https://www.cnblogs.com/tiandaowuji/p/6010210.html

SQL取xml中节点值相关推荐

  1. java获取返回xml节点里的值,关于用java读取xml中节点的值解决方案

    关于用java读取xml中节点的值 在写个工程,用到了如下配置的XML文档,时间紧没法网上资料太多一时看了头大,实在不知道怎么解析了,各位大神麻烦指教一下. 配置文档内容如下 hibernate-co ...

  2. HTML批量删除标记,批量删除LabelImg制作的.xml中的部分标签值(删除.xml的节点值)...

    概述 自己在用labelImg打好标签后,想只用其中几类训练,不想训练全部类别,又不想重新打标生成.xml文件,因此想到这个办法:直接在.xml文件中删除原有的不需要的标签类及其属性. 打标时标签名出 ...

  3. android package.xml,Android自动化编译设置AndroidManifest.xml中package值(包名)

    手动修改Android的AndroidManifest.xml中package值(包名)很简单,手动修改即可.但是项目中需要把Android的项目源代码放到服务器端在客户下载时候动态编译生成,且生成的 ...

  4. sql server XML中value(),exists(),nodes()方法

    原文链接:https://www.cnblogs.com/deng779256146/p/8637304.html T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. 本章将分析 ...

  5. html取 输入框中的值,jquery获取input输入框中的值

    如何用javascript获取input输入框中的值,js/jq通过name.id.class获取input输入框中的value 先准备一段 HTML 一.jquery获取input文本框中的值 通过 ...

  6. php如何修改xml中element值,php修改xml节点的值

    今天刚刚实现的功能,找了很多资料,本来想用xpath,但是由于对xpath不甚了解.绕了个大圈后还是决定用DOMDocument来做. 在此做一个标记,以后找资料的时候也不用太辛苦. 先从数据库读取数 ...

  7. SQL取整与时间差值返回

    在昨天学习了Checksum(Newid()函数和RAND()求随机数的区别,示例中用到了Round和DATEDIFF()语法. 今天我们来了解一下这两个函数的作用 Round舍入 select ro ...

  8. springboot取yml中的值_SpringBoot 中从yml配置文件中读取常用的参数值

    SpringBoot现在基本上都是使用application-XXX.yml(生产环境为pro,开发测试环境为dev)来配置项目中的一些配置条件,在springboot中还可以通过从yml文件中将ym ...

  9. springboot取yml中的值_@Value拜拜:更优雅的获取springboot yml中的值

    偶然看到国外论坛有人在吐槽同事从配置文件获取值的方式,因此查阅了相关资料发现确实有更便于管理更优雅的获取方式. 1.什么是yml文件 application.yml取代application.prop ...

最新文章

  1. hbase查看表结构_HBase
  2. Android 调试 Release 包(debuggable)
  3. Using mongoDB's Profiler analyze the performance of database operations
  4. 数据挖掘在呼叫中心的六大应用点
  5. linux 各系统防火墙操作
  6. OpenCV3学习(12.5) opencv实现粒子滤波目标跟踪
  7. 「分布式系统理论」系列专题整理
  8. MFC中的return
  9. MS CRM 4中,添加营销列表成员查找列
  10. JavaEE系统架构师学习路线
  11. 计算机组成原理袁春风百度云,计算机组成原理[袁春风]chap32.pdf
  12. Python为什么叫爬虫?Python与爬虫有什么关系?
  13. python 500行 小项目 --- 简单对象模型
  14. Ubuntu16.04下cuda9.0+cudnn7.0安装指南
  15. print 设置纸张的高度_祝贺! 2020珠峰高程测量登山队成功登顶!用Python计算一张纸对折多少次会超过珠峰高度?...
  16. python代码设计测试用例_《带你装B,带你飞》pytest成神之路2- 执行用例规则和pycharm运行的三种姿态...
  17. JavaScript基础学习——CSS预处理Less
  18. word-break:break-word、word-break:break-all和word-wrap:break-word 自动换行
  19. 2020Android面经,历时一个半月,斩获3个大厂offer
  20. 关于RTSP_RTP_RTCP协议的深刻初步介绍

热门文章

  1. SQL Server 2016新特性:Query Store
  2. Runnable接口介绍(中文文档)
  3. 【Thread】简单说说java.lang.Thread.State
  4. [示例]创建Student类,输入学生信息并存入字典,将3个存有学生信息的字典存入数组,并计算...
  5. Tiny4412开发板 LED灯的控制
  6. Android网络之数据解析----SAX方式解析XML数据
  7. 周立波贼经典的话11-20
  8. git 操作命令整理
  9. 云边协同 — 协同的类型
  10. DPDK — RTE_LOG 日志模块