函数包含使用Oracle的XML

时间:2015-08-18 15:23:02

标签: xml oracle xpath

我有一张桌子' 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属性值?

1 个答案:

答案 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
相关问题