使用 Oracle 数据库中的 SQL 从 XML Clob 中提取数据

Posted

技术标签:

【中文标题】使用 Oracle 数据库中的 SQL 从 XML Clob 中提取数据【英文标题】:Extract data from XML Clob using SQL from Oracle Database 【发布时间】:2012-11-16 00:47:36 【问题描述】:

我想使用 sql 从表 TRAPTABCLOB 中提取 Decision 的值,该表具有列 testclob,XML 存储为 clob。

示例 XML 如下。

        <?xml version="1.0" encoding="UTF-8"?>
<DCResponse>
    <Status>Success</Status>
    <Authentication>
        <Status>Success</Status>
    </Authentication>
    <ResponseInfo>
        <ApplicationId>5701200</ApplicationId>
        <SolutionSetInstanceId>
                        63a5c214-b5b5-4c45-9f1e-b839a0409c24
                    </SolutionSetInstanceId>
        <CurrentQueue />
    </ResponseInfo>
    <ContextData>
        <!--Decision Details Start-->
        <Field key="SoftDecision">A</Field>
        <Field key="**Decision**">1</Field>
        <Field key="NodeNo">402</Field>
        <Field key="NodeDescription" />
        <!--Decision Details End-->
        <!--Error Details Start-->
        <Field key="ErrorResponse">
            <Response>
                <Status>[STATUS]</Status>
                <ErrorCode>[ERRORCODE]</ErrorCode>
                <ErrorDescription>[ERRORDESCRIPTION]</ErrorDescription>
                <Segment>[SEGMENT]</Segment>
            </Response>
        </Field>
        <Field key="ErrorCode">0</Field>
        <Field key="ErrorDescription" />
    </ContextData>
</DCResponse>

【问题讨论】:

【参考方案1】:

这应该可以工作

SELECT EXTRACTVALUE(column_name, '/DCResponse/ContextData/Decision') FROM traptabclob;

我假设 ** 只是为了突出显示?

【讨论】:

不工作 - 出现 Ora-00932 错误。 A.B.Cade 的解决方案效果很好。【参考方案2】:

试试

SELECT EXTRACTVALUE(xmltype(testclob), '/DCResponse/ContextData/Field[@key="Decision"]') 
FROM traptabclob;

Here 是一个 sqlfiddle 演示

【讨论】:

嗨..我有类似的问题。你能帮帮我吗。SQL Fiddle 不起作用。 现在很好用。如何提取全部内容并将其保存到文件中? @SOaddict,整个内容都在testclob 中,您可以使用正确的 XPATH 表达式(提取函数的第二个参数)提取任何您想要的内容。至于如何将其写入文件 - 这是一个完全不同的帖子......见here或here 如何读取第一个的“key”属性的值? 我试试这个,它不起作用,SQL Fiddle 也不起作用。

以上是关于使用 Oracle 数据库中的 SQL 从 XML Clob 中提取数据的主要内容,如果未能解决你的问题,请参考以下文章

Oracle PL/SQL 使用 XMLTABLE 解析 xml 中的嵌套对象

从XML到Oracle PL / SQL环境中的路径列表

将 XML 文档从 SQL SERVER 插入到 Oracle

mybatis里的xml中的写添加的sql语句,怎么使用oracle数据库的序列

如何在 Oracle SQL 中的 XML 标记中进行搜索?

ORACLE PL SQL 从 SOAP XML 中提取值