编写一个查询来解析一个XML clob,需要返回一个特定的子节点,其中一个节点= 375。
表是F1_MKTMSG_IN_DATA列是MKTMSG_ID,其中包含以下XML(示例记录)
<root>
<MKT_MSG_DATA>
<receivedDetail>
<rpdtGrp>
<rpdt>
<rpdt>375</rpdt>
<rpd>2023-11-05</rpd>
</rpdt>
<rpdt>
<rpdt>656</rpdt>
<rpd>2023-11-05</rpd>
</rpdt>
<rpdt>
<rpdt>MRR</rpdt>
<rpd>2023-11-05</rpd>
</rpdt>
</rpdtGrp>
<rpdrGrp/>
<rpaGrp/>
<mdlGrp/>
<udlGrp/>
<cdGrp/>
</receivedDetail>
</MKT_MSG_DATA>
</root>
字符串
我需要选择2023-11-05,其中= 375。因为我不相信它实际上是父,我想我只需要抓住包含rpdt = 375的rpdt父,然后从中抓住rpd值,但我不确定EXTRACTVALUE是否有这种能力?
我试过用
第一个月
这将使我得到正确的值,但只有当xml是在特定的顺序,我不能肯定,如果它将永远在该顺序,所以我需要它来实际查找特定的值。
1条答案
按热度按时间7z5jn7bk1#
您可以更改筛选器以根据子节点值进行筛选:
字符串
我不确定为什么要添加
root
节点;您的示例值已经有了它,但可能您的真实的数据没有--但是由于MKT_MSG_DATA
本身就是一个有效的片段,添加root
似乎并没有真正实现任何东西。还要注意,
EXTRACTVALUE
已经被弃用很长时间了,你可以使用XMLQuery
来代替:型
如果需要,您可以将返回值转换为本地日期。
或者你可以使用XMLTable,它可以方便地一次获取多个值,而且还可以轻松地将数据转换为正确的类型:
型
fiddle