Oralce 支持SQL XQuery查询

一个简单示例:

SELECT XMLQuery('for $i in /Videogame return $i/Type'
passing by value X
RETURNING CONTENT)
FROM (SELECT XMLTYPE('<Videogame><Type>Racing</Type><Name>NFS Most Wanted</Name><Version>2.0</Version><Size>5.5 GB</Size></Videogame>') as X FROM dual) a;

工作实例(忽略):

select a.workflowcode,b.displayname
from
(select a.workflowcode, XMLQuery('for $i in /Workflow/Activitieswhere $i /ApproveActivity/ParticipateMethod = "Serial" and $i/ApproveActivity/ParticipateType="MultiParticipants"return $i/ApproveActivity'passing by value contentxRETURNING CONTENT) XMLData
from(select a.workflowcode,a.content as contentxfrom(SELECT a.*,Row_Number() OVER (partition by a.BizObjectSchemacode ORDER BY a.workflowversion desc) versionNumb FROM OT_WorkflowTemplatePublished a)  a
where a.versionNumb=1) a
) a
left outer join Ot_Functionnode b on a.workflowcode=b.Code
where a.XMLData is not null

说明:

Note: XMLQuery returns query results as XML. XMLTable returns results as relation data.

Demo Tables

CREATE TABLE person_data (
person_id   NUMBER(3),
person_data XMLTYPE);

Demo Data

INSERT INTO person_data
(person_id, person_data)
VALUES
(1, XMLTYPE('<PDRecord><PDName>Daniel Morgan</PDName><PDDOB>12/1/1951</PDDOB><PDEmail>damorgan@u.washington.edu</PDEmail></PDRecord>')
);INSERT INTO person_data
(person_id, person_data)
VALUES
(2, XMLTYPE('<PDRecord><PDName>Jack Cline</PDName><PDDOB>5/17/1949</PDDOB><PDEmail>damorgan@u.washington.edu</PDEmail></PDRecord>')
);INSERT INTO person_data
(person_id, person_data)
VALUES
(3, XMLTYPE('<PDRecord><PDName>Caleb Small</PDName><PDDOB>1/1/1960</PDDOB><PDEmail>damorgan@u.washington.edu</PDEmail></PDRecord>')
);COMMIT;SELECT * FROM person_data;

SELECT

Simple Query 

语法:

SELECT <column_list>, XMLQuery (
'for $i IN <record_end_tag>where $i<item_end_tag> = <value>order by $i<item_end_tag>return $i<item_end_tag>'
PASSING BY VALUE <xml_record_column>
RETURNING CONTENT) <returning_column_alias>
FROM <table_name>;
Note: What is within the parentheses is case sensitive, and you cannot use Upper Case or InitCap for commands.

示例:(with equals)
SELECT person_id, XMLQuery(
'for $i in /PDRecordwhere $i /PDName = "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName eq "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;

(Greater Than)

SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName > "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName gt "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;

(Greater Than Or Equal To)

SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName >= "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName ge "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;

(Less Than)

SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName < "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName lt "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;

(Less Than Or Equal To)

SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName >= "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName le "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;

(Not Equals)

SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName != "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;SELECT person_id, XMLQuery (
'for $i in /PDRecordwhere $i /PDName ne "Daniel Morgan"order by $i/PDNamereturn $i/PDName'
passing by value person_data
RETURNING CONTENT) XMLData
FROM person_data;

Additional Syntax Elements

[ // div union <CastAs>
- >> * intersect <CastableAs>
+ and idiv   <EOF>
| or mod   <InstanceOf>
except is to   <TreatAs>

参考:http://psoug.org/reference/xmlquery.html

Oracle XQuery 过滤XML查询SQL相关推荐

  1. oracle执行脚本顺序执行吗,【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 - 不及格的飞鱼...

    记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 问题现象: STARiBOSS5.8.1R2版本中,河北对帐JOB执行时,无法生成发票对帐文件. 首先,Quartz表达式培植的启动时间为 ...

  2. Oracle EBS 值层次结构查询SQL

    Oracle EBS 值层次结构查询SQL -- 查看层次结构 -- 值层次结构 SELECT ffvcv.flex_value -- 子值 ,ffvcv.description -- 说明 ,ffv ...

  3. Oracle学习:子查询 (sql 嵌套 sql)

    查询比 SCOTT 工资高的员工信息 (1)查找 SCOTT 的工资 select sal from emp where ename='SCOTT'; // 结果:3000 (2)将上一步得到的结果作 ...

  4. Oracle 常用系统数据查询SQL(转)

    目录 1.查询oracle的连接数 2.查询oracle的并发连接数 3.查看不同用户的连接数 4.查看所有用户 5.查看用户或角色系统权限(直接赋值给用户或角色的系统权限) 6.查看角色(只能查看登 ...

  5. ORACLE表空间使用量查询SQL

    SELECT Upper(F.TABLESPACE_NAME) AS 表空间名     , round(D.TOT_GROOTTE_MB / 1024, 2) AS "总大小(G)" ...

  6. Oracle几种分页查询sql语句

    https://www.cnblogs.com/pypua/p/12896984.html

  7. Oracle分页查询sql语句

    1.oracle中的分页查询sql语句基本可以按照如下的模板来改写: SELECT *FROM (SELECT A.*, ROWNUM RNFROM (SELECT * FROM TABLE_NAME ...

  8. oracle+xquery函数,xquery

    在 Oracle XML DB 中使用 XQuery 目的 本教程描述了如何在 Oracle XML DB 中使用 XQuery. 所需时间 大约 1 小时. 主题 本教程包括下列主题: 查看屏幕截图 ...

  9. mysql中输出100内质数,oracle中用while循环查询1到100的质数(素数)

    declare i number:=1;  --表示当前数字 j number:=0;  --从2开始,存储判断的数字 sum1 number:=0;--总数 begin while(i<100 ...

最新文章

  1. 「人民的希望」首批临床结果公布:2/3重症10天内有效改善,一半以上摆脱呼吸机 | 新英格兰医学重磅...
  2. Nginx报错:nginx: [emerg] open() “/usr/local/nginx/../conf/nginx.conf“ failed (2: No such file or direc
  3. java温度计的实现_echart 之实现温度计
  4. 使用FCN做图像语义分割(实践篇)
  5. AI 如何推动双碳目标达成?施耐德电气这么说
  6. ZOJ 3804 YY's Minions (简单模拟)
  7. 华为公布鸿蒙2.0内测清单,华为鸿蒙操作系统2.0版支持的设备清单流出,荣耀30s...
  8. 解决vue在ie9中的兼容问题
  9. 解决vmware虚拟机安装苹果系统Mac OS X 10.10出现“二进制转换不支持用于Mac OS X”的问题-网络教程与技术 -亦是美网络 - 傲游云浏览器 (beta) 4.9.3.100...
  10. python 人工智能项目代码_7个Python实战项目代码,让你分分钟晋级大神!
  11. 电脑小手图标怎么去除_图文教你去除桌面图标箭头_消除电脑图标小箭头的方法-系统城...
  12. 电压跟随器的问答汇总
  13. Windows 10 修改文件夹图标
  14. 将多个EXCEL表中部分固定单元格的内容整理提取到一张工作表中
  15. 一篇文章教你选出廉价好用的家用投影仪!
  16. Nginx启动成功但页面访问不到的解决方法
  17. SQL按姓氏笔画排序
  18. Vue.js实战第十章笔记
  19. 如何理解dubbox
  20. Python软件编程等级考试一级——20220915

热门文章

  1. Linux进程ID号--Linux进程的管理与调度(三)
  2. JMeter学习(二十三)关联
  3. Selenium的延迟等待
  4. IIS7入门之旅:(3)CGI application和FastCGI application的区别
  5. iOS原生与html交互 使用第三方WebViewJavascriptBridge
  6. swift 进入后台或者点击home键是程序进入后台后,持续定位
  7. 使用mvc框架搭建跟人站点
  8. 70.nodejs操作mongodb
  9. 一步一步SharePoint 2007之十六:注册并配置一个网站用户
  10. 高性能NoSql数据库 SSDB