今天在处理问题时,发现一个table的一个字段里面数据不对,想要通过update直接修改,谁知提交时,报错ORA-31011:XML语法分析失败
原来这个字段是 XMLTYPE类型的,百度后,说需要特殊处理,我用了下面的SQL,还是报错字符串缓冲区太小
update table1 a set a.class=replace(bo,'ABC','ABCD') where a.class= '1234567' ;
按照下面的语句执行倒是没有报错,但是格式乱掉了
update table1 t set t.class= updatexml(t.prp_xml, 'ABC','ABCD') where t.class= ‘1234567’;
最后,我就想了一个特殊的办法,虽然不是很常规,但是如果只是想要修改单条数据,想要改内容比较多,又较难替换的话,就可以用以下临时办法:
先见一张临时表,比如叫table_temp,只键一个字段,这个字段(比如叫class_temp)用CLOB类型(CLOB的可以直接修改),把table1中的class字段全部copy出来,然后用文本编辑器,比如UE修改完后,copy到class_temp字段中,保存后,把table_temp.class_temp update到table1.class里面
update table1 a set a.class=(select
xmltype(class_temp) from table_temp b ) where a.class= '1234567' ;