繁体   English   中英

如何使用DeleteXML-需要从Oracle中的XmlType删除XML节点

[英]How to use DeleteXML - Need to Remove XML Node from XmlType in Oracle

我正在使用oracle 11.2.0.3。 我有一个具有以下结构的XMLType列:

<section>
    <question questionID="1">
        <answer>US</answer>
        <answer>XX</answer>
     </question>
</section>

我需要删除第二个节点,以便在更新之后-剩下以下内容:

<section>
    <question questionID="1">
        <answer>US</answer>
     </question>
</section>

我一直在尝试各种查询而没有成功。 根据我的研究,我认为下面的查询会起作用-但没有。 我收到消息XX行已更新,但是当我查询xml时-我要删除的节点仍然存在! 我在这里想念什么?

update SECTION s set s.section_xml = deleteXML(s.section_xml, '//question[@questionID=1]/answer[2]')

感谢您的任何帮助!!!!!

您的查询确实有效,至少在11.2.0.2.0上有效:

SQL> CREATE TABLE SECTION AS
  2  SELECT XMLTYPE('<section>
  3      <question questionID="1">
  4          <answer>US</answer>
  5          <answer>XX</answer>
  6       </question>
  7  </section>') section_xml FROM dual;

Table created

SQL> UPDATE SECTION s
  2     SET s.section_xml = deleteXML(s.section_xml,
  3                                   '//question[@questionID=1]/answer[2]');

1 row updated

SQL> SELECT s.section_xml.getClobVal() FROM SECTION s;

S.SECTION_XML.GETCLOBVAL()
--------------------------------------------------------------------------------
<section>
  <question questionID="1">
    <answer>US</answer>
  </question>
</section>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM