我有一张桌子' MYTABLE' XMLTYPE类型的XML_COL列。 我正在尝试执行xpath查询以检索具有类似' 00'
等文本的元素的数字存储在列中的xml是:
<ROOT>
<DOCUMENT myattribute="001">
<NODE>a</NODE>
</DOCUMENT>
<DOCUMENT myattribute="002">
<NODE>b</NODE>
</DOCUMENT>
<ROOT>
我知道我以这种方式搜索属性值:
SELECT COUNT(*) FROM MYTABLE
WHERE existsNode(XML_COL,'/DOCUMENT[@myattribute = ''001'']') = 1;
是否可以执行like或contains over属性值?
答案 0 :(得分:0)
你可以用XMLTABLE代替吗?
with mytable as (select xmltype('<ROOT>
<DOCUMENT myattribute="001">
<NODE>a</NODE>
</DOCUMENT>
<DOCUMENT myattribute="002">
<NODE>b</NODE>
</DOCUMENT>
<DOCUMENT myattribute="013">
<NODE>c</NODE>
</DOCUMENT>
</ROOT>') xml_col from dual)
select count(*)
from mytable mt,
xmltable('//ROOT/DOCUMENT' passing mt.xml_col
columns doc_attribute varchar2(5) path '@myattribute',
node varchar2(10) path 'NODE') x
where x.doc_attribute like '00%';
COUNT(*)
----------
2