我在表格中的XML如下
<fields><field key="2" val="5" type="D"/><![CDATA[<field key="3" val="SkpKSko="
type="T"></field>]]></fields>
我想通过传递密钥作为SkpKSko=
来获得3
的价值
我在使用查询
SELECT x.val from Valuefromglobal ,xmltable('/fields/field[@key=2]' PASSING
XMLFILED COLUMNS val VARCHAR2(400) PATH '@val' ) x
上面的查询给了我5
预期答案的结果。但是,如果我将我的参数更改为@key=3
以获取CDATA值,从而产生0条记录。
如果使用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=