我需要标识所有记录中存在标签的地方,如<hint name="REAL_TIME_TAGGING" value="TRUE">
。 xml作为oracle clob存储在表tab_a(xml clob列:col_a)中,并在此处显示片段。在oracle clob中检查xml标签元素属性值
<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>
,我可以做如下:
select * from tab_a where EXTRACTVALUE (XMLTYPE (col_a),'/category/hints/hint[2]/@name') = 'REAL_TIME_TAGGING';
但是,我相信一定有使用existsnode等,这是不是为我工作的一种更好的方式。 此外,这里的捕捉是暗示[2]不一定是这种情况。在有些情况下,它可能在第二个位置以外的任何地方,并且上述查询在其他情况下不在提示[2]位置时会失败。
任何帮助将是非常赞赏。 任何帮助将非常感激。
如何/类别/提示//提示/ @ name ='REAL_TIME_TAGGING'?这应该看所有元素。你是什么意思,“existnode等不起作用?”你得到一个错误,或没有结果回来?请在这种情况下显示您正在尝试的内容。 –
OldProgrammer
谢谢。我已经能够使用existsNode来弄清楚了。得到了一个令我沮丧的ORA错误。但是,现在我已经消除它并正在工作。 – Casey