Oracle XQuery 过滤XML查询SQL
2017-10-11 14:40
281 查看
Oralce 支持SQL XQuery查询
一个简单示例:
工作实例(忽略):
说明:
Note: XMLQuery returns query results as XML. XMLTable returns results as relation data.
Demo Tables
Demo Data
SELECT
Simple Query
语法:
(Greater Than)
(Greater Than Or Equal To)
(Less Than)
(Less Than Or Equal To)
(Not Equals)
Additional Syntax Elements
参考:http://psoug.org/reference/xmlquery.html
一个简单示例:
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/Activities where $i /ApproveActivity/ParticipateMethod = "Serial" and $i/ApproveActivity/ParticipateType="MultiParticipants" return $i/ApproveActivity' passing by value contentx RETURNING CONTENT) XMLData from(select a.workflowcode,a.content as contentx from (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 /PDRecord where $i /PDName = "Daniel Morgan" order by $i/PDName return $i/PDName' passing by value person_data RETURNING CONTENT) XMLData FROM person_data; SELECT person_id, XMLQuery ( 'for $i in /PDRecord where $i /PDName eq "Daniel Morgan" order by $i/PDName return $i/PDName' passing by value person_data RETURNING CONTENT) XMLData FROM person_data;
(Greater Than)
SELECT person_id, XMLQuery ( 'for $i in /PDRecord where $i /PDName > "Daniel Morgan" order by $i/PDName return $i/PDName' passing by value person_data RETURNING CONTENT) XMLData FROM person_data; SELECT person_id, XMLQuery ( 'for $i in /PDRecord where $i /PDName gt "Daniel Morgan" order by $i/PDName return $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 /PDRecord where $i /PDName >= "Daniel Morgan" order by $i/PDName return $i/PDName' passing by value person_data RETURNING CONTENT) XMLData FROM person_data; SELECT person_id, XMLQuery ( 'for $i in /PDRecord where $i /PDName ge "Daniel Morgan" order by $i/PDName return $i/PDName' passing by value person_data RETURNING CONTENT) XMLData FROM person_data;
(Less Than)
SELECT person_id, XMLQuery ( 'for $i in /PDRecord where $i /PDName < "Daniel Morgan" order by $i/PDName return $i/PDName' passing by value person_data RETURNING CONTENT) XMLData FROM person_data; SELECT person_id, XMLQuery ( 'for $i in /PDRecord where $i /PDName lt "Daniel Morgan" order by $i/PDName return $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 /PDRecord where $i /PDName >= "Daniel Morgan" order by $i/PDName return $i/PDName' passing by value person_data RETURNING CONTENT) XMLData FROM person_data; SELECT person_id, XMLQuery ( 'for $i in /PDRecord where $i /PDName le "Daniel Morgan" order by $i/PDName return $i/PDName' passing by value person_data RETURNING CONTENT) XMLData FROM person_data;
(Not Equals)
SELECT person_id, XMLQuery ( 'for $i in /PDRecord where $i /PDName != "Daniel Morgan" order by $i/PDName return $i/PDName' passing by value person_data RETURNING CONTENT) XMLData FROM person_data; SELECT person_id, XMLQuery ( 'for $i in /PDRecord where $i /PDName ne "Daniel Morgan" order by $i/PDName return $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> |
相关文章推荐
- Oracle由SQL查询生成XML
- Oracle XQuery查询、构建和转换XML概述(4)
- SQL中的XML,XPath,XQuery查询方法
- 使用 Oracle XQuery 查询、构建和转换 XML
- Oracle XQuery查询、构建和转换XML概述(5)
- SQL中的XML,XPath,XQuery查询方法
- Oracle XQuery查询、构建和转换XML概述(6)
- SQL中的XML,XPath,XQuery查询方法
- Oracle XQuery查询、构建和转换XML概述(7)
- Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据
- Oracle XQuery查询、构建和转换XML概述(8)
- Oracle XQuery查询、构建和转换XML概述(9)
- Oracle XQuery查询、构建和转换XML 1
- Oracle XQuery查询、构建和转换XML概述(10)
- T-SQL XQuery (XML路径查询) (转)http://blog.csdn.net/Beirut/article/details/8150116
- [转载]Oracle XQuery查询、构建和转换XML
- Oracle SQL查询,日期过滤条件要注意的一点
- Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据
- Oracle XQuery查询、构建和转换XML概述(1)
- Oracle XQuery查询、构建和转换XML