我有一个包含 XMLType 字段的表。该表是使用以下 DDL/DML 创建和加载的:
CREATE TABLE T_ECO_test_LOG
(
SECID NUMBER NOT NULL,
LOG_ATTRIBUTES SYS.XMLTYPE
)
INSERT INTO t_eco_test_log VALUES
( 1, XMLType(
'<attributes>
<attribute>
<name>remoteAddress</name>
<value>180.201.106.130</value>
</attribute>
<attribute>
<name>domain</name>
<value>BSI_US</value>
</attribute>
</attributes>'));
INSERT INTO t_eco_test_log VALUES
( 2, XMLType(
'<attributes>
<attribute>
<name>user</name>
<value>xxxx</value>
</attribute>
<attribute>
<name>domain</name>
<value>BSI_US</value>
</attribute>
</attributes>'));
我想逐行获取/attributes/attribute/name 中的不同值;所以有了数据 O 想得到:
remoteAddress
domain
user
到目前为止,我已经尝试了以下查询:
select extractValue(value(x),'/attributes/attribute/name')
from t_eco_log,
table(xmlsequence(extract(log_attributes,'/attributes')) )x
但我收到以下消息:
ORA-19025: EXTRACTVALUE 仅返回一个节点的值
如果我使用
select extract(value(x),'/attributes/attribute/name')
from t_eco_log,
table(xmlsequence(extract(log_attributes,'/attributes')) )x
我得到了一个 XML 结果,其中包含:
<name>remoteAddress</name><name>domain</name>
但我想将它们作为行,我该怎么做?
TIA