项目场景:
使用xmlagg xmlparse拼接字符串时报错
问题描述
SQL作用:将text字段根据id拼接成一个字段,因数据太大截取前500个使用:
select to_char(substr(xmlagg(xmlparse(content b.text||',') order by b.id).getclobval(),0,500)) from sie_tax_invoices b
查询SQL时因为有特殊字符导致查询SQL报错:
原因分析:
原数据中包含不能被XML解析的特殊字符
解决方案:
通过regexp_replace去掉原数据中的特殊字符:
修改后SQL
select to_char(substr(xmlagg(xmlparse(content regexp_replace(b.text,'’|£|&|\*|@|-|>|\/|<|;|\', '', 1, 0, 'i')||',') order by b.id).getclobval(),0,500)) from sie_tax_invoices b
2023年3月28日修改,正则修改 *|/ ==>> *|/