【发布时间】:2022-10-06 19:53:35
【问题描述】:
我有一个 xml,它在我的表的 clob 字段中
这是我目前使用的代码:
create table
xml_key
(
mycol number,
xml clob
);
insert into xml_key
values(1653,
\'<AppHdr>
<Fr>
<FIId>
<FinInstnId>
<BICFI>CRESUS33</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>CAYTTRISXXX</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>e9aab4a5-bc32-4548-93f6-aa47dd97d77</BizMsgIdr>
<MsgDefIdr>pac.004.001.09</MsgDefIdr>
<BizSvc>swift.cbprplus.02</BizSvc>
<CreDt>2019-08-12T13:59:26+01:00</CreDt>
<Rltd>
<Fr>
<FIId>
<FinInstnId>
<BICFI>LOYDGB21002</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>CRESUS33</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>1234567890</BizMsgIdr>
<MsgDefIdr>pacs.008.001.08</MsgDefIdr>
<CreDt>2019-08-12T12:59:26+01:00</CreDt>
</Rltd>
</AppHdr>\');
当我从 xml 中提取 BIC 代码时,我遇到了问题。 我不想要像 CRESUS33LOYDGB21002 这样的双节点 如何从 xml 中仅提取 CRESUS33 作为 FromBIC?
select XMLTYPE(t.xml).EXTRACT(\'//Fr/FIId/FinInstnId/BICFI/text()\').getStringVal() fromBIC,
XMLTYPE(t.xml).EXTRACT(\'//Rltd/Fr/FIId/FinInstnId/BICFI/text()\').getStringVal() RltdFromBIC
from xml_key t
where mycol=1653 ;
FROMBIC RLTDFROMBIC
--------------------------------- --------------------------------------
CRESUS33LOYDGB21002 LOYDGB21002
谢谢
标签: sql oracle extract xmltype