转载---SQL Server XML基础学习之5--XQuery(query)
本章写一些SQL Server XML的一些XQuery基础语法,主要讲的query查询语法
T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集。
XQuery 基于现有的 XPath 查询语言,并支持更好的迭代、更好的排序结果以及构造必需的 XML 的功能。
在前面我们已经学习了 XPath 的基本语法,本章将学习T-SQL 的 XQuery 语法
------------------------------------------------------------------------------------------------------------------
T-SQL XQuery包含如下函数
query(XPath条件): 结果为 xml 类型; 返回由符合条件的节点组成的非类型化的 XML 实例
value(XPath条件,数据类型):结果为指定的标量值类型; xpath条件结果必须唯一
exist(XPath条件):结果为布尔值; 表示节点是否存在,如果执行查询的 XML 数据类型实例包含NULL则返回NULL
nodes(XPath条件): 返回由符合条件的节点组成的一行一列的结果表
*/DECLARE @x XML
SET @x='
<root><rogue id="001"><hobo id="1"><name>彪</name><name>阿彪</name><type>流氓</type></hobo></rogue><rogue id="002"><hobo id="2"><name>光辉</name><name>二辉</name><type>流氓</type></hobo></rogue><rogue id="001"><hobo id="3"><name>小德</name><name>小D</name><type>臭流氓</type></hobo></rogue>
</root>'
--取root的所有子节点
--SELECT @x.query('root'),@x.query('/root'),@x.query('.')
--/*注释:
-- 这里实际上是取所有节点,root 必须是最高级节点名称,当换成任意子节点都是取不到值的
--*/
--取 hobo 的所有子节点,不管 hobo 在文档中的位置。
SELECT @x.query('//hobo')
----扩展:取rogue下 所有 name
SELECT @x.query('//rogue//name')
--取属性为id 的所有节点
SELECT @x.query('//hobo[@id]')
/*注释:XQuery不支持直接顶级 attribute 节点,必须附带上对节点的查找属性必须要加[]
*/
--选取属于 root 子元素的第一个 rogue 元素。
SELECT @x.query('/root/rogue[1]')
--选取属于 root 子元素的最后一个 rogue 元素。
SELECT @x.query('/root/rogue[last()]')
--选取属于 root 子元素的倒数第二个 rogue 元素。
SELECT @x.query('/root/rogue[last()-1]')
--选取最前面的两个属于 root 元素的子元素的 rogue 元素。
SELECT @x.query('/root/rogue[position()<3]')
--选取 root 元素的所有 hobo 元素,且其中的属性 id 的值须大于 1。
SELECT @x.query('/root//hobo[@id>1]')
----扩展: root 元素的所有 hobo 元素,且其中的属性 id 的值须大于 1 并且子节点 name 的值为 光辉 的。
SELECT @x.query('/root/rogue[./hobo[@id>1 and name="光辉"]]')
--选取 root 子元素的所有 rogue 元素,且 属性id 的值须大于 为001 子元素hobo 属性 id 的值为 1的
SELECT @x.query('/root/rogue[@id="001" and ./hobo[@id=1]]')
--if then else 表达式
SELECT @x.query('
if ( 1=2 ) then/root/rogue[@id="001"]
else/root/rogue[@id="002"]
')--路径表达式步骤中的谓词
SELECT @x.query('/root/rogue[1]/hobo/name')--选择第一个 /root/rogue 节点下的所有 <Name> 元素。
SELECT @x.query('/root/rogue/hobo[1]/name')--选择 /root/rogue/hobo 节点下的所有 <Name> 元素。
SELECT @x.query('/root/rogue/hobo/name[1]')--选择 /root/rogue/hobo 节点下的所有第一个 <Name> 元素。
SELECT @x.query('(/root/rogue/hobo/name)[1]')--选择 /root/rogue/hobo 节点下的第一个 <Name> 元素。
--使用聚合函数
SELECT @x.query('count(/root/rogue/hobo/name)'),@x.query('count(/root/rogue/hobo/name[1])')--FLWOR 迭代语法。FLWOR 是 for、let、where、order by 和 return 的缩写词。
--1
SELECT @x.query('
<result>{ for $i in /root/rogue/hobo/name[1]return string($i)}
</result>')
--2
SELECT @x.query('for $Loc in /root/rogue/hobo,$FirstStep in $Loc/name[1]return string($FirstStep)
')
--3
SELECT @x.query('for $i in /root/rogue/hoboorder by $i/@id descendingreturn string($i/name[1])
')
--4
SELECT @x.query('for $i in /root/rogue/hoboorder by local-name($i) return string($i/name[1])
')
转载于:https://www.cnblogs.com/Frank99/p/5974448.html
转载---SQL Server XML基础学习之5--XQuery(query)相关推荐
- SQL Server XML基础学习之5—XQuery(query)
T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. XQuery 基于现有的 XPath 查询语言,并支持更好的迭代.更好的排序结果以及构造必需的 XML 的功能. 在前面我们已 ...
- 转载---SQL Server XML基础学习之7--XML modify() 方法对 XML 数据中插入、更新或删除...
/*------------------------------------------------------------------------------+ #| = : = : = : = : ...
- 转载---SQL Server XML基础学习2之--FOR XML AUTO/RAW
本文主要介绍FOR XML 的 AUTO 模式和 RAW 模式 --AUTO 模式将查询结果以嵌套 XML 元素的方式返回.这不能较好地控制从查询结果生成的 XML 的形式. --如果要生成简单的层次 ...
- 1 SQL server数据库基础
SQL server数据库基础 一 数据库简介 1数据库的基本概念 1)数据 ·描述事物的符号记录称为数据(Data),包括数字.文字.图像.声音等.以"记录"的形式按统一格式进行 ...
- [转]SQL Server 索引基础知识(2)----聚集索引,非聚集索引
SQL Server 索引基础知识(2)----聚集索引,非聚集索引 [来自]http://blog.joycode.com/ghj/archive/2008/01/02/113291.aspx 由于 ...
- SQL Server 2008 基础
SQL Server 2008 基础 SQL流程 TDS是一种协议,一系列描述两个计算机间如何传输数据的规则.象别的协议一样,它定义了传输信息的类型和他们传输的顺序.总之,协议描述了"线上的 ...
- sql server 循环_学习SQL:SQL Server循环简介
sql server 循环 Loops are one of the most basic, still very powerful concepts in programming – the sam ...
- 数据库设计-SQL Server开发实现学习
1.目录 SQL Server数据库基础 T-SQL语言编程框架 实例规范:项目 笔记1 SQL Server数据库基础 1. 1数据库及其对象 SQLserver的数据库是所涉及的对象以及数据的集合 ...
- c井语言和SQL第一章上机1,第一章 SQL Server 数据库基础复习内容(上机)
上机课程总目标 在本学期中,将模拟开发一套学员信息管理系统,用来管理学员的个人基本资料,老师资料,学生成绩,课程信息等教学相关内容,以实现学校的信息自动化,提高工作效率. 该系统包括学生档案管理.学生 ...
最新文章
- java notifier_Java学习笔记---4.Java的分支循环语句
- OEM status|start|stop
- SpringCloud Ribbon(四)之全局配置与服务配置
- 在 windows 下使用 Xming+Putty 显示 Linux 下软件图形界面
- DeFi借贷协议Liquity宣布主网将于4月5日上线
- selenium定位方式
- scrum开发中测试人员如何工作?
- 使用BetterZip结合自动操作工具和预设设置创建电影解压程序
- Julia : 如何进一步改进操作Redis的效率?
- JSON.stringify初步使用
- 怎么把照片背景变成蓝色
- 服务器外链图片不显示,新浪图床已限制图片外链使用(附解决方法)
- ‘XXXX’ was compiled with optimization - stepping may behave oddly; variables may not be available
- 有没有可以测试手速的软件,我的第一个Mac小程序 — 手速测试器
- OpenCV学习十:blur、GaussianBlur、medianBlur 、bilateralFilter 图片的模糊、高斯模糊、中值模糊、二值滤波(课程里将模糊与滤波认定为一样) 以及 锐化算子
- 有道云笔记markdown上传本地图片的方法
- python派森编程_派森(Python)官方下载_派森(Python)最新版_派森(Python)v2.7.14官方正式版-华军软件园...
- html中按钮下拉菜单,Bootstrap3.0学习笔记之按钮与下拉菜单
- [ZJOI2009]狼和羊的故事【网络流】【最大流(最小割)】
- 动手学深度学习(tensorflow)---学习笔记整理(一、预备知识篇)