不对之处,请指出,谢谢!
XMLType 用于处理 XML 数据。 它作为预定义的成员函数在它上面提取 XML 节点和片段。
先整理出工作当中遇到update XMLType类型字段的两种情况:
场景:当数据中需要update的节点明确,并且更新数据段单一
方法一:
update tableName set xxx_xml = updatexml(xmltype(xxx_xml),'/data/test/object/column/test','<test>111</test>').getClobVal() where condition ...;
场景:当数据中有重复性的规律需要替换,这时候我们再去找节点就很麻烦,使用sys.XMLType.createXML可以解决。
方法二:
update tableName set xxx_xml = sys.XMLType.createXML(REPLACE(xmltype.getclobval(xxx_xml),'Lady gaga','Lady=gaga') where condition ...;
注意:
当xxx_xml 字段字节超过4 K时,xmltype.getclobval() 方法会有效解决: ORA-19011: Character string buffer too small 的问题。
补充:
上述where condition 用 EXTRACT(xxx_xml , ‘//column[@test=“111” and xxx]’) is not null