本章写一些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)相关推荐

  1. SQL Server XML基础学习之5—XQuery(query)

    T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. XQuery 基于现有的 XPath 查询语言,并支持更好的迭代.更好的排序结果以及构造必需的 XML 的功能. 在前面我们已 ...

  2. 转载---SQL Server XML基础学习之7--XML modify() 方法对 XML 数据中插入、更新或删除...

    /*------------------------------------------------------------------------------+ #| = : = : = : = : ...

  3. 转载---SQL Server XML基础学习2之--FOR XML AUTO/RAW

    本文主要介绍FOR XML 的 AUTO 模式和 RAW 模式 --AUTO 模式将查询结果以嵌套 XML 元素的方式返回.这不能较好地控制从查询结果生成的 XML 的形式. --如果要生成简单的层次 ...

  4. 1 SQL server数据库基础

    SQL server数据库基础 一 数据库简介 1数据库的基本概念 1)数据 ·描述事物的符号记录称为数据(Data),包括数字.文字.图像.声音等.以"记录"的形式按统一格式进行 ...

  5. [转]SQL Server 索引基础知识(2)----聚集索引,非聚集索引

    SQL Server 索引基础知识(2)----聚集索引,非聚集索引 [来自]http://blog.joycode.com/ghj/archive/2008/01/02/113291.aspx 由于 ...

  6. SQL Server 2008 基础

    SQL Server 2008 基础 SQL流程 TDS是一种协议,一系列描述两个计算机间如何传输数据的规则.象别的协议一样,它定义了传输信息的类型和他们传输的顺序.总之,协议描述了"线上的 ...

  7. sql server 循环_学习SQL:SQL Server循环简介

    sql server 循环 Loops are one of the most basic, still very powerful concepts in programming – the sam ...

  8. 数据库设计-SQL Server开发实现学习

    1.目录 SQL Server数据库基础 T-SQL语言编程框架 实例规范:项目 笔记1 SQL Server数据库基础 1. 1数据库及其对象 SQLserver的数据库是所涉及的对象以及数据的集合 ...

  9. c井语言和SQL第一章上机1,第一章 SQL Server 数据库基础复习内容(上机)

    上机课程总目标 在本学期中,将模拟开发一套学员信息管理系统,用来管理学员的个人基本资料,老师资料,学生成绩,课程信息等教学相关内容,以实现学校的信息自动化,提高工作效率. 该系统包括学生档案管理.学生 ...

最新文章

  1. java notifier_Java学习笔记---4.Java的分支循环语句
  2. OEM status|start|stop
  3. SpringCloud Ribbon(四)之全局配置与服务配置
  4. 在 windows 下使用 Xming+Putty 显示 Linux 下软件图形界面
  5. DeFi借贷协议Liquity宣布主网将于4月5日上线
  6. selenium定位方式
  7. scrum开发中测试人员如何工作?
  8. 使用BetterZip结合自动操作工具和预设设置创建电影解压程序
  9. Julia : 如何进一步改进操作Redis的效率?
  10. JSON.stringify初步使用
  11. 怎么把照片背景变成蓝色
  12. 服务器外链图片不显示,新浪图床已限制图片外链使用(附解决方法)
  13. ‘XXXX’ was compiled with optimization - stepping may behave oddly; variables may not be available
  14. 有没有可以测试手速的软件,我的第一个Mac小程序 — 手速测试器
  15. OpenCV学习十:blur、GaussianBlur、medianBlur 、bilateralFilter 图片的模糊、高斯模糊、中值模糊、二值滤波(课程里将模糊与滤波认定为一样) 以及 锐化算子
  16. 有道云笔记markdown上传本地图片的方法
  17. python派森编程_派森(Python)官方下载_派森(Python)最新版_派森(Python)v2.7.14官方正式版-华军软件园...
  18. html中按钮下拉菜单,Bootstrap3.0学习笔记之按钮与下拉菜单
  19. [ZJOI2009]狼和羊的故事【网络流】【最大流(最小割)】
  20. 动手学深度学习(tensorflow)---学习笔记整理(一、预备知识篇)

热门文章

  1. Python3之Django Web框架中间件???
  2. 软考解析:2015年上半年下午试卷
  3. ruby格式化SQL语句
  4. 本人开源项目 Lu-Rpc
  5. Android M App休眠 (adb shell dumpsys usagestats)
  6. Node.js执行系统命令
  7. Noip 2016 愤怒的小鸟 题解
  8. 【转】如何理解c和c++的复杂类型声明
  9. 第二章作业第2题--苏志华
  10. Android API之android.net.wifi.WifiConfiguration