请考虑表格下面的两行。
max.poll.records
我的问题是:
如果XML仅具有节点poll()
(意味着ID_NUM | GENERAL_DATA
0100 | <...><UpdateServices><AddServices><RemoveServices><...>
0200 | <...><UpdateServices><...>
和<UpdateServices>
不存在)如何删除行?和
如果存在<AddServices>
和<RemoveServices>
,如何从XML中删除节点<UpdateServices>
?
<AddServices>
谢谢。 :)
答案 0 :(得分:0)
如果XML仅具有节点<UpdateServices>
(意味着<AddServices>
和<RemoveServices>
不存在)如何删除行?
delete from sample_table X
where xmlExists('//UpdateServices' passing X.general_data)
and not xmlExists('//AddServices|//RemoveServices' passing X.general_data)
;
如果存在<UpdateServices>
和<AddServices>
,如何从XML中删除节点<RemoveServices>
?
update sample_table X
set X.general_data = deleteXml(X.general_data, '//UpdateServices')
where xmlExists('//AddServices' passing X.general_data)
and xmlExists('//RemoveServices' passing X.general_data)
;
注意:我相信后者可以通过XQuery更加有效地完成,但是由于我(仍然)不了解该语言,因此我只能提供deleteXml()
解决方案。 / p>