gpt4 book ai didi

xml - 如何使用 XMLTABLE 在 Oracle SQL 中导入复杂的 XML 类型

转载 作者:数据小太阳 更新时间:2023-10-29 02:44:58 27 4
gpt4 key购买 nike

我将以下 XML 文件从名为 ARCHIVDATA 的表中完全导入到一个名为 CLOB_CONTENT 的单元格中:

<AuditLog>
<AuditLogEntry>
<Header>1
</Header>
<Content>2
</Content>
</AuditLogEntry>
<AuditLogEntry>
<Header>3
</Header>
</AuditLogEntry>
<AuditLogEntry>
<Header>4
</Header>
<Content>5
</Content>
<Content>6
</Content>
</AuditLogEntry>
</AuditLog>

结果我想要的是下表(有两行的表):
页眉 |内容
1 | 2
3 |空
4 | 5
4 | 6

我该怎么做?

我已经尝试过以下方法:

SELECT x3.header, x4.content
FROM (select xmltype(xml.CLOB_CONTENT) xmldata from ARCHIVDATA) x1,
xmltable('/AuditLog/AuditLogEntry'
passing x1.xmldata
columns
header XmlType path 'header',
content XmlType path 'content'
)x2,
xmltable('/header'
passing x2.header
columns
header varchar2(4000) path '.'
)x3,
xmltable('/content'
passing x2.content
columns
content varchar2(4000) path '.'
)x4
;/

我必须更改什么才能获得所需的结果表?

最佳答案

我用下一个查询解决了这个任务。但我确信存在更简单的方法。

SELECT headers.header,
contents.content
FROM
(SELECT extracted."Header" AS header
FROM ARCHIVDATA a,
xmltable('/AuditLog/AuditLogEntry' passing xmltype(a.CLOB_CONTENT) columns "Header" VARCHAR2(6) PATH '/AuditLogEntry/Header') extracted
) headers
LEFT JOIN
(SELECT sel.Header,
sel2.content
FROM
(SELECT extracted."Header" AS header,
extracted."Content" AS content
FROM ARCHIVDATA a,
xmltable('/AuditLog/AuditLogEntry' passing xmltype(a.CLOB_CONTENT) columns "Header" VARCHAR2(6) PATH '/AuditLogEntry/Header', "Content" xmltype path '/AuditLogEntry') extracted
) sel,
xmltable('/AuditLogEntry/Content' passing sel.content columns content VARCHAR2(6) path '/Content') sel2
) contents
ON headers.header = contents.header;

关于xml - 如何使用 XMLTABLE 在 Oracle SQL 中导入复杂的 XML 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27382694/

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