Oracle中如何使用XQuery获取特定数据

How to use XQuery in Oracle to get specific data

我有一个 XML,如下所示:

<configurations>
  <config>
    <pop3server>pop.gmail.com</pop3server> 
    <userid>abc_aa</userid>
    <proxyport>12</proxyport>
    <capturetomailonly>False</capturetomailonly>
  </config>
</configurations>

我想检索 angular 括号之间的数据,即 pop.gmail.com 来自

<pop3server>pop.gmail.com</pop3server> or 

12 来自

<proxyport>12</proxyport>

ORACLE.

用下面的方法试过了,没有得到结果。

CAST(CAST(ConfigXml AS XML).query('data(/configurations/config/pop3server)') AS NVARCHAR2 (64))  Pop3Server

如何推进?

您需要使用EXTRACTVALUE功能如下:

SQL> select EXTRACTVALUE(xmltype('<configurations>
  2    <config>
  3      <pop3server>pop.gmail.com</pop3server>
  4      <userid>abc_aa</userid>
  5      <proxyport>12</proxyport>
  6      <capturetomailonly>False</capturetomailonly>
  7    </config>
  8  </configurations>'),'/configurations/config/pop3server') from dual;

EXTRACTVALUE(XMLTYPE('<CONFIGURATIONS><CONFIG><POP3SERVER>POP.GMAIL.COM</POP3SER
--------------------------------------------------------------------------------
pop.gmail.com

SQL>

xmltype用于将字符串转换为xmltype数据类型。