oracle11g,XML
我正在开发Oracle11g,表结构是oracle11g,XML,xml,oracle,Xml,Oracle,我正在开发Oracle11g,表结构是 ID - NUMBER xmlCOL - CLOB 这是表中的XML数据 <DEPARTMENT ID="10" NAME="ACCOUNTING"> <EMPLOYEES> <EMPLOYEE> <ID>7934</ID> <NAME>MILLER</NAME> </EMPLO
ID - NUMBER
xmlCOL - CLOB
这是表中的XML数据
<DEPARTMENT ID="10" NAME="ACCOUNTING">
<EMPLOYEES>
<EMPLOYEE>
<ID>7934</ID>
<NAME>MILLER</NAME>
</EMPLOYEE>
</EMPLOYEES>
</DEPARTMENT>
是否可以根据我提供的值查找节点详细信息?例如
我可以搜索值MILLER,它返回节点viz/DEPARTMENT/EMPLOYEES/EMPLOYEES/NAME?您可以使用extractvalue获取节点的值,并将其用于表达式-
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'
是的,这是可能的。但是你自己做过什么吗?你认为什么是节点?这个这个ArkadiuszŁukasiewicz,我用INSTR和SUBSTR编写了一个大函数来获取所有节点。当我在函数中传递值7934作为参数时,它将返回我/部门/员工/员工/ID;当我传递值MILLER作为参数时,它将返回/部门/员工/员工/姓名。我一直在努力寻找,是否有一个内置在Oracle 11g中,以获得相同的输出。我的实际XML是不同的。这只是一个XML实践。这有点冗长。