SQL取xml中节点值
/*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中节点值相关推荐
- java获取返回xml节点里的值,关于用java读取xml中节点的值解决方案
关于用java读取xml中节点的值 在写个工程,用到了如下配置的XML文档,时间紧没法网上资料太多一时看了头大,实在不知道怎么解析了,各位大神麻烦指教一下. 配置文档内容如下 hibernate-co ...
- HTML批量删除标记,批量删除LabelImg制作的.xml中的部分标签值(删除.xml的节点值)...
概述 自己在用labelImg打好标签后,想只用其中几类训练,不想训练全部类别,又不想重新打标生成.xml文件,因此想到这个办法:直接在.xml文件中删除原有的不需要的标签类及其属性. 打标时标签名出 ...
- android package.xml,Android自动化编译设置AndroidManifest.xml中package值(包名)
手动修改Android的AndroidManifest.xml中package值(包名)很简单,手动修改即可.但是项目中需要把Android的项目源代码放到服务器端在客户下载时候动态编译生成,且生成的 ...
- sql server XML中value(),exists(),nodes()方法
原文链接:https://www.cnblogs.com/deng779256146/p/8637304.html T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. 本章将分析 ...
- html取 输入框中的值,jquery获取input输入框中的值
如何用javascript获取input输入框中的值,js/jq通过name.id.class获取input输入框中的value 先准备一段 HTML 一.jquery获取input文本框中的值 通过 ...
- php如何修改xml中element值,php修改xml节点的值
今天刚刚实现的功能,找了很多资料,本来想用xpath,但是由于对xpath不甚了解.绕了个大圈后还是决定用DOMDocument来做. 在此做一个标记,以后找资料的时候也不用太辛苦. 先从数据库读取数 ...
- SQL取整与时间差值返回
在昨天学习了Checksum(Newid()函数和RAND()求随机数的区别,示例中用到了Round和DATEDIFF()语法. 今天我们来了解一下这两个函数的作用 Round舍入 select ro ...
- springboot取yml中的值_SpringBoot 中从yml配置文件中读取常用的参数值
SpringBoot现在基本上都是使用application-XXX.yml(生产环境为pro,开发测试环境为dev)来配置项目中的一些配置条件,在springboot中还可以通过从yml文件中将ym ...
- springboot取yml中的值_@Value拜拜:更优雅的获取springboot yml中的值
偶然看到国外论坛有人在吐槽同事从配置文件获取值的方式,因此查阅了相关资料发现确实有更便于管理更优雅的获取方式. 1.什么是yml文件 application.yml取代application.prop ...
最新文章
- hbase查看表结构_HBase
- Android 调试 Release 包(debuggable)
- Using mongoDB's Profiler analyze the performance of database operations
- 数据挖掘在呼叫中心的六大应用点
- linux 各系统防火墙操作
- OpenCV3学习(12.5) opencv实现粒子滤波目标跟踪
- 「分布式系统理论」系列专题整理
- MFC中的return
- MS CRM 4中,添加营销列表成员查找列
- JavaEE系统架构师学习路线
- 计算机组成原理袁春风百度云,计算机组成原理[袁春风]chap32.pdf
- Python为什么叫爬虫?Python与爬虫有什么关系?
- python 500行 小项目 --- 简单对象模型
- Ubuntu16.04下cuda9.0+cudnn7.0安装指南
- print 设置纸张的高度_祝贺! 2020珠峰高程测量登山队成功登顶!用Python计算一张纸对折多少次会超过珠峰高度?...
- python代码设计测试用例_《带你装B,带你飞》pytest成神之路2- 执行用例规则和pycharm运行的三种姿态...
- JavaScript基础学习——CSS预处理Less
- word-break:break-word、word-break:break-all和word-wrap:break-word 自动换行
- 2020Android面经,历时一个半月,斩获3个大厂offer
- 关于RTSP_RTP_RTCP协议的深刻初步介绍
热门文章
- SQL Server 2016新特性:Query Store
- Runnable接口介绍(中文文档)
- 【Thread】简单说说java.lang.Thread.State
- [示例]创建Student类,输入学生信息并存入字典,将3个存有学生信息的字典存入数组,并计算...
- Tiny4412开发板 LED灯的控制
- Android网络之数据解析----SAX方式解析XML数据
- 周立波贼经典的话11-20
- git 操作命令整理
- 云边协同 — 协同的类型
- DPDK — RTE_LOG 日志模块