簡體   English   中英

在 Oracle 中,如何提取 XML 列中 XML 項的值?

[英]In Oracle, how can I extract value of XML item in XML column?

我在 Oracle 表中有 XML 列,其中我有這個字符串:

<field name="Text1" type="String"><value/>

如果存在,我需要提取該字段的值,在上面的示例中它不存在。 在下面的示例中,該值存在:

<field name="Text1" type="String"><value>12345</value>

最好的方法是什么?

謝謝你。

正如你所說:提取價值

SQL> with test (col) as
  2    (select '<field name="Text1" type="String"><value>12345</value></field>'
  3     from dual
  4    )
  5  SELECT extractvalue(xmltype(col), '/field/value') result
  6  from test;

RESULT
----------------------------------------------------------------------------------------------------
12345

SQL>

XMLTABLE將是一個不錯的選擇,以這樣的方式使用

SELECT x.*
  FROM xml_tab t,
       XMLTABLE('//Root'
                   PASSING xml_data
                    COLUMNS
                        field1      INT PATH 'field[@name="Text1"]/value',
                        field2      INT PATH 'field[@name="Text2"]/value'
                        ) x  

返回

現場1 FIELD2
12345

xml_data可能在哪里

<Root>
  <field name="Text1" type="String">
    <value>12345</value>
  </field>
  <field name="Text2" type="String">
    <value/>
  </field>
</Root>

演示

PS。 EXTRACTVALUE function 已棄用。 它仍然支持向后兼容。 但是,Oracle 建議您改用XMLTABLE function 或XMLCASTXMLQUERY函數

暫無
暫無

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

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