gpt4 book ai didi

sql - 在 XMLType 上选择不同的值

转载 作者:行者123 更新时间:2023-12-01 01:25:39 25 4
gpt4 key购买 nike

我有一个包含 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

最佳答案

类似的东西:

with x1 as (select xmltype('<attributes>
<attribute>
<name>remoteAddress</name>
<value>180.201.106.130</value>
</attribute>
<attribute>
<name>domain</name>
<value>BSI_US</value>
</attribute>
</attributes>') x2 from dual)
select extract(value(x3),'/attribute/name')
from x1,
table(xmlsequence(extract(x2,'/attributes/*')) ) x3

如果您提供 CREATE TABLE 和 INSERT,那么更容易给出精确的 SQL

关于sql - 在 XMLType 上选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com