[英]Oracle 11g, XML
I am working on Oracle 11g and table structure is 我正在使用Oracle 11g,表结构是
ID - NUMBER
xmlCOL - CLOB
This is my XML data in the table 这是我在表中的XML数据
<DEPARTMENT ID="10" NAME="ACCOUNTING">
<EMPLOYEES>
<EMPLOYEE>
<ID>7934</ID>
<NAME>MILLER</NAME>
</EMPLOYEE>
</EMPLOYEES>
</DEPARTMENT>
Is it possible that I can find the node details based on the value I provide? 我是否可以根据提供的值找到节点详细信息? For eg
例如
Can I search for value MILLER and it returns the node viz. 我可以搜索值MILLER并返回节点viz。
/DEPARTMENT/EMPLOYEES/EMPLOYEE/NAME
? /DEPARTMENT/EMPLOYEES/EMPLOYEE/NAME
?
You can to use extractvalue
to get value of node and use it into where
expression - 您可以使用
extractvalue
获取节点的值并将其用于where
表达式-
with t as
(
select xmltype('
<DEPARTMENT ID="10" NAME="ACCOUNTING">
<EMPLOYEES>
<EMPLOYEE>
<ID>7934</ID>
<NAME>MILLER</NAME>
</EMPLOYEE>
<EMPLOYEE>
<ID>123123</ID>
<NAME>JOHN</NAME>
</EMPLOYEE>
</EMPLOYEES>
</DEPARTMENT>
') as xml_
from dual
)
select column_value as node, extractvalue(column_value, '/*/NAME') as name, extractvalue(column_value, '/*/ID') as id
from t, table(xmlsequence(EXTRACT(t.xml_, '/DEPARTMENT/EMPLOYEES/*'))) s
where extractvalue(column_value, '/*/NAME') = 'MILLER'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.