簡體   English   中英

Oracle XMLTABLE - 如何從 XMLType 中刪除節點?

[英]Oracle XMLTABLE - how to remove a node from XMLType?

假設我們有以下 XML:

<root>
  <item>
    <a>a1</a>
    <b>b1</b>
    <c>c1</c>
    <d>d1</d>
    <e>e1</e>
  </item>
  <item>
    <a>a2</a>
    <b>b2</b>
    <c>c2</c>
    <d>d2</d>
    <e>e2</e>
  </item>
  ...
</root>

如何使用 XMLTABLE 和 PATH 獲得以下結果?

A   B   ITEM_XML (excluding <d>)
a1  b1  <item><a>a1</a><b>b1</b><c>c1</c><e>e1</e></item>
a2  b2  <item><a>a2</a><b>b2</b><c>c2</c><e>e2</e></item>

請不要 DELETEXML,因為它已被棄用。 我對如何從 XMLType 中刪除/排除某些節點特別感興趣。 請注意,ITEM_XML 應該像原始的一樣打印出來,這樣放在表格中更方便。

從 Oracle Database 12c Release 1 (12.1.0.1) 開始,使用 XQuery Update 更新 XML 數據。 ( https://docs.oracle.com/en/database/oracle/oracle-database/12.2/adxdb/deprecated-functions-for-updating-XML-data.ZFC336EZ883 ).8C67A2 刪除節點示例:

UPDATE warehouses SET warehouse_spec =
  XMLQuery('copy $tmp := . modify delete node
        $tmp/Warehouse/VClearance return $tmp'
       PASSING warehouse_spec RETURNING CONTENT)
  WHERE warehouse_spec IS NOT NULL;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM