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数据类型。
我有一个 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数据类型。