Oracle11g 在oracle clob中检查xml标记元素属性值

Oracle11g 在oracle clob中检查xml标记元素属性值,oracle11g,Oracle11g,我需要识别有标签的所有记录,例如。 xml作为oracle clob存储在table tab_axml clob列中:col_a,代码片段如下所示 <category> <hints> <hint name="NO_DEDUP" value="FALSE"></hint> <hint name="REAL_TIME_TAGGING" value="TRUE"></hint> more <hint

我需要识别有标签的所有记录,例如。 xml作为oracle clob存储在table tab_axml clob列中:col_a,代码片段如下所示

<category>
<hints>
    <hint name="NO_DEDUP" value="FALSE"></hint>
    <hint name="REAL_TIME_TAGGING" value="TRUE"></hint>
    more <hint> elements
    <hint ...>
</hints>
<elements>
<element>
...
</element>
</elements>
</category>
但是,我相信一定有更好的方法使用existsnode等,这对我不起作用。 此外,这里的要点是提示[2]不一定是这样。有时,它可以位于第2个位置以外的任何位置,并且对于不在提示[2]位置的其他情况,上述查询将失败

任何帮助都将不胜感激。 任何帮助都将不胜感激。

谢谢您花的时间。 我已经能够弄明白了

以防万一,我的解决方案是:

select 
count(1) 
from tab_a
where 
existsNode(xmltype(col_c), '//hints/hint[@name="REAL_TIME_TAGGING"]') = '1'

也许您可以尝试使用dbms_lob.instr函数进行查询。例如:

select * 
from table 
where dbms_lob.instr(clob_column, 'some content') >= 1

希望能有帮助。关于这方面的更多信息:

关于/category/hints//@name='REAL\u TIME\u TAGGING'如何?这应该考虑所有因素。什么意思,existnode等不工作?你得到一个错误,还是没有结果?请展示你在这种情况下的尝试。谢谢。我已经能够使用existsNode解决这个问题。是一个令我沮丧的错误。但是,现在我已经消除了它,并且正在工作。
select * 
from table 
where dbms_lob.instr(clob_column, 'some content') >= 1