EXTRACT¶
说明¶
该函数用于得到一个xpath表达式作用于xml数据上产生的结果,该结果是一个节点集合。(兼容Oracle)
返回值¶
Xpath作用于xml数据后得到的节点集
示例¶
示例1:
SQL> select extract(xmltype('<aa><bb>afeafe</bb></aa>'),'/aa/bb | /aa') from dual;
extract
-----------------------------------------
<aa><bb>afeafe</bb></aa><bb>afeafe</bb>
(1 row)
示例2:在pl中通过变量调用
create or replace function extract_test(xmlVar xmltype, xpathStr
varchar2) return xmltype is
resultXml xmltype;
begin
resultXml := xmlVar.extract(xpathStr);
return resultXml;
end;
/
SQL> select extract_test(xmltype('<aa><bb>afeafe</bb></aa>'),
'/aa/bb |/aa') from dual;
EXTRACT_TEST
------------------------------------------
<aa><bb>afeafe</bb></aa><bb>afeafe</bb>
(1 row)
示例3:
Create TABLE EMPLOYEES
(
id NUMBER,
data XMLTYPE
);
Insert INTO EMPLOYEES
VALUES (1, xmltype ('<Employees>
<Employee emplid="1111" type="admin">
<firstname>John</firstname>
<lastname>Watson</lastname>
<age>30</age>
<email>johnwatson@sh.com</email>
</Employee>
<Employee emplid="2222" type="admin">
<firstname>Sherlock</firstname>
<lastname>Homes</lastname>
<age>32</age>
<email>sherlock@sh.com</email>
</Employee>
<Employee emplid="3333" type="user">
<firstname>Jim</firstname>
<lastname>Moriarty</lastname>
<age>52</age>
<email>jim@sh.com</email>
</Employee>
<Employee emplid="4444" type="user">
<firstname>Mycroft</firstname>
<lastname>Holmes</lastname>
<age>41</age>
<email>mycroft@sh.com</email>
</Employee>
</Employees>'));
SQL> SELECT EXTRACT(data,'/Employees/Employee') node FROM EMPLOYEES;
NODE
------------------------------------------------------
<Employee emplid="1111" type="admin">
<firstname>John</firstname>
<lastname>Watson</lastname>
<age>30</age>
<email>johnwatson@sh.com</email>
</Employee><Employee emplid="2222" type="admin">
<firstname>Sherlock</firstname>
<lastname>Homes</lastname>
<age>32</age>
<email>sherlock@sh.com</email>
</Employee><Employee emplid="3333" type="user">
<firstname>Jim</firstname>
<lastname>Moriarty</lastname>
<age>52</age>
<email>jim@sh.com</email>
</Employee><Employee emplid="4444" type="user">
<firstname>Mycroft</firstname>
<lastname>Holmes</lastname>
<age>41</age>
<email>mycroft@sh.com</email>
</Employee>
(1 row)