EXTRACTVALUE¶
说明¶
Extractvalue函数使用一个xmltype类型的变量和一个xpath表达式作为参数,把目标节点的值以varchar类型的形式返回。Xpath表达式的计算结果必须是一个单节点,并且只能是text、attribute或element节点中的一种。Xpath指向的节点是一个元素节点,则这个元素节点只能有一个text节点的孩子,text 节点的内容会作为函数的结果返回。若xpath表达式以’/’开始,则表示表达式是一个绝对路径,省掉开始的’/’则为相对路径。若你省掉开始的’/’,则相对路径是相对于xml数据的根节点。(兼容Oracle)
返回值¶
Xpath表达式指向节点的值
注释¶
该函数暂不支持指定namespace
示例¶
示例1:
SQL> select extractvalue(xmltype('<aa><bb>bb</bb></aa>'), 'aa/bb');
EXTRACTVALUE
--------------
bb
(1 row)
示例2:
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 extractvalue(data,'/Employees/Employee[@emplid="4444"]/age') FROM EMPLOYEES;
EXTRACTVALUE
--------------
41
(1 row)