【问题标题】:From Oracle DB Extract the Value from CDATA based on Key从 Oracle DB 根据 Key 从 CDATA 中提取值
【发布时间】:2019-02-21 14:26:23
【问题描述】:

我的XML在下表中

<fields><field key="2" val="5" type="D"/><![CDATA[<field key="3" val="SkpKSko=" 
type="T"></field>]]></fields>

我想通过将密钥传递为3 来获取SkpKSko= 的值

我正在使用查询

SELECT x.val  from Valuefromglobal ,xmltable('/fields/field[@key=2]' PASSING 
XMLFILED COLUMNS val VARCHAR2(400) PATH '@val' ) x 

上面的查询给了我5 预期的答案。 但是,如果我将参数更改为 @key=3 以获取导致 0 条记录的 CDATA 值。

【问题讨论】:

标签: xml oracle cdata


【解决方案1】:

如果您使用 XMLTABLE 提取 CDATA,然后将其传递给下一个 XMLTABLE 以获取 VAL 属性,也许您可​​以获得所需的结果。

select
  x2.val
from xmltable('/fields'
              passing xmltype('
                        <fields>
                          <field key="2" val="5" type="D"/>
                          <![CDATA[<field key="3" val="SkpKSko=" type="T">
                                   </field>]]>
                        </fields>
                      ')
              columns cdata varchar2(2048) path 'text()') as x1,
     xmltable('/field[@key=3]'
              passing xmltype(x1.cdata)
              columns val varchar2(30) path '@val') as x2;

输出:

VAL
--------
SkpKSko=

DB<>FIDDLE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2014-02-23
    • 1970-01-01
    • 2018-10-03
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多