我在 Oracle 表中有 XML 列,我有這個字串:
<field name="Text1" type="String"><value/>
如果存在,我需要提取該欄位的值,在上面的示例中它不存在。在下面的示例中,該值存在:
<field name="Text1" type="String"><value>12345</value>
什么是最好的方法來做到這一點?
謝謝你。
uj5u.com熱心網友回復:
正如你所說:提取價值。
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>
uj5u.com熱心網友回復:
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 | 場2 |
|---|---|
| 12345 |
這里xml_data是
<Root>
<field name="Text1" type="String">
<value>12345</value>
</field>
<field name="Text2" type="String">
<value/>
</field>
</Root>
Demo
附注。該EXTRACTVALUE功能已棄用。它仍然支持向后兼容。但是,Oracle 建議您使用該XMLTABLE函式,或者使用XMLCASTandXMLQUERY函式代替
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/388837.html
