【发布时间】:2019-01-12 03:01:55
【问题描述】:
考虑下面有 2 行的表格。
ID_NUM | GENERAL_DATA
0100 | <...><UpdateServices><AddServices><RemoveServices><...>
0200 | <...><UpdateServices><...>
我的问题是:
如果 XML 仅具有节点 <UpdateServices>(意味着 <AddServices> 和 <RemoveServices> 不存在),如何删除该行?和
如果存在<AddServices> 和<RemoveServices>,如何从XML 中删除节点<UpdateServices>?
CREATE TABLE SAMPLE_TABLE AS
select '0100' as id_num,
XMLTYPE('<TRX>
<DATA>
<Request APIType="null">
<SubscriberIdsInfo>
<ExternalId>
<ExternalId>0100</ExternalId>
</ExternalId>
<SubscriberId>
<SubscrNumber/>
</SubscriberId>
</SubscriberIdsInfo>
<UpdateServices>
<Soc>ABC</Soc>
<ServiceAgreementSequenceNo/>
<DealerCode/>
<DeployMode/>
<EffectiveDate>2019-10-16T00:00:00</EffectiveDate>
<ExpirationDate/>
<OfferInstanceId/>
</UpdateServices>
<AddServices>
<Soc>ABC1</Soc>
<ServiceAgreementSequenceNo/>
<DealerCode/>
<DeployMode/>
<EffectiveDate>2018-10-16T00:00:00</EffectiveDate>
<ExpirationDate/>
<OfferInstanceId/>
</AddServices>
<RemoveServices>
<Soc>ABC2</Soc>
<ServiceAgreementSequenceNo/>
<DealerCode/>
<DeployMode/>
<EffectiveDate>2017-10-16T00:00:00</EffectiveDate>
<ExpirationDate/>
<OfferInstanceId/>
</RemoveServices>
<SubParameters>
<Name>PoolID</Name>
<Values>POOL0100</Values>
<EffectiveDate>2014-10-16T14:08:37</EffectiveDate>
<ExpirationDate/>
</SubParameters>
<ActivityInfo/>
</Request>
</DATA>
</TRX>') general_data from dual;
insert into SAMPLE_TABLE (id_num,general_data)
select '0200' as id_num,
XMLTYPE('<TRX>
<DATA>
<Request APIType="null">
<SubscriberIdsInfo>
<ExternalId>
<ExternalId>0200</ExternalId>
</ExternalId>
<SubscriberId>
<SubscrNumber/>
</SubscriberId>
</SubscriberIdsInfo>
<UpdateServices>
<Soc>ABC</Soc>
<ServiceAgreementSequenceNo/>
<DealerCode/>
<DeployMode/>
<EffectiveDate>2019-10-16T00:00:00</EffectiveDate>
<ExpirationDate/>
<OfferInstanceId/>
</UpdateServices>
<SubParameters>
<Name>PoolID</Name>
<Values>POOL0200</Values>
<EffectiveDate>2014-10-16T14:08:37</EffectiveDate>
<ExpirationDate/>
</SubParameters>
<ActivityInfo/>
</Request>
</DATA>
</TRX>') general_data from dual;
commit;
谢谢。 :)
【问题讨论】: