Oracle XQuery 过滤XML查询SQL
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相关推荐
- oracle执行脚本顺序执行吗,【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 - 不及格的飞鱼...
记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 问题现象: STARiBOSS5.8.1R2版本中,河北对帐JOB执行时,无法生成发票对帐文件. 首先,Quartz表达式培植的启动时间为 ...
- Oracle EBS 值层次结构查询SQL
Oracle EBS 值层次结构查询SQL -- 查看层次结构 -- 值层次结构 SELECT ffvcv.flex_value -- 子值 ,ffvcv.description -- 说明 ,ffv ...
- Oracle学习:子查询 (sql 嵌套 sql)
查询比 SCOTT 工资高的员工信息 (1)查找 SCOTT 的工资 select sal from emp where ename='SCOTT'; // 结果:3000 (2)将上一步得到的结果作 ...
- Oracle 常用系统数据查询SQL(转)
目录 1.查询oracle的连接数 2.查询oracle的并发连接数 3.查看不同用户的连接数 4.查看所有用户 5.查看用户或角色系统权限(直接赋值给用户或角色的系统权限) 6.查看角色(只能查看登 ...
- ORACLE表空间使用量查询SQL
SELECT Upper(F.TABLESPACE_NAME) AS 表空间名 , round(D.TOT_GROOTTE_MB / 1024, 2) AS "总大小(G)" ...
- Oracle几种分页查询sql语句
https://www.cnblogs.com/pypua/p/12896984.html
- Oracle分页查询sql语句
1.oracle中的分页查询sql语句基本可以按照如下的模板来改写: SELECT *FROM (SELECT A.*, ROWNUM RNFROM (SELECT * FROM TABLE_NAME ...
- oracle+xquery函数,xquery
在 Oracle XML DB 中使用 XQuery 目的 本教程描述了如何在 Oracle XML DB 中使用 XQuery. 所需时间 大约 1 小时. 主题 本教程包括下列主题: 查看屏幕截图 ...
- mysql中输出100内质数,oracle中用while循环查询1到100的质数(素数)
declare i number:=1; --表示当前数字 j number:=0; --从2开始,存储判断的数字 sum1 number:=0;--总数 begin while(i<100 ...
最新文章
- 「人民的希望」首批临床结果公布:2/3重症10天内有效改善,一半以上摆脱呼吸机 | 新英格兰医学重磅...
- Nginx报错:nginx: [emerg] open() “/usr/local/nginx/../conf/nginx.conf“ failed (2: No such file or direc
- java温度计的实现_echart 之实现温度计
- 使用FCN做图像语义分割(实践篇)
- AI 如何推动双碳目标达成?施耐德电气这么说
- ZOJ 3804 YY's Minions (简单模拟)
- 华为公布鸿蒙2.0内测清单,华为鸿蒙操作系统2.0版支持的设备清单流出,荣耀30s...
- 解决vue在ie9中的兼容问题
- 解决vmware虚拟机安装苹果系统Mac OS X 10.10出现“二进制转换不支持用于Mac OS X”的问题-网络教程与技术 -亦是美网络 - 傲游云浏览器 (beta) 4.9.3.100...
- python 人工智能项目代码_7个Python实战项目代码,让你分分钟晋级大神!
- 电脑小手图标怎么去除_图文教你去除桌面图标箭头_消除电脑图标小箭头的方法-系统城...
- 电压跟随器的问答汇总
- Windows 10 修改文件夹图标
- 将多个EXCEL表中部分固定单元格的内容整理提取到一张工作表中
- 一篇文章教你选出廉价好用的家用投影仪!
- Nginx启动成功但页面访问不到的解决方法
- SQL按姓氏笔画排序
- Vue.js实战第十章笔记
- 如何理解dubbox
- Python软件编程等级考试一级——20220915