接到一个问题,前台业务报错
ORA-31011: XML语法分析失败
LPX-00217: 无效字符 3 (U+0003)
问题现象:
前台选择其中一个对象报错,其他对象无报错;为个例,说明数据存在问题。
处理方式:
#查询出现问题的表的xmltype列:
SELECT column_name FROM your_table WHERE column_name LIKE '%' || CHR(3) || '%';
#查询到结果后,打开列内容找到其中的特殊字符所在位置,发现确实存在特殊字符
#修改特殊字符为空
UPDATE your_table SET column_name = REPLACE(column_name, CHR(3), '');#再次查询对象恢复正常,定位问题原因是由于前天业务操作失误录入了特殊字符导致,问题处理完成
备注:
- U+0009(Tab,制表符)
- U+000A(LF,换行符)
- U+000D(CR,回车符)
- U+0000(NUL,空字符)
- U+0001(SOH,开始标题)
- U+0002(STX,开始文本)
- U+0003(ETX,结束文本,问题中的字符)
- U+0004(EOT,传输结束)
- U+0005(ENQ,询问)
- U+0006(ACK,确认)
- U+0007(BEL,响铃)
- U+0008(BS,退格)
- U+000B(VT,垂直制表)
- U+000C(FF,换页)
- U+000E(SO,移出)
- U+000F(SI,移入)
- U+0010(DLE,数据链路转义)
- U+0011(DC1,设备控制1)
- U+0012(DC2,设备控制2)
- U+0013(DC3,设备控制3)
- U+0014(DC4,设备控制4)
- U+0015(NAK,否定确认)
- U+0016(SYN,同步空闲)
- U+0017(ETB,传输块结束)
- U+0018(CAN,取消)
- U+0019(EM,介质结束)
- U+001A(SUB,替换)
- U+001B(ESC,转义)
- U+001C(FS,文件分隔符)
- U+001D(GS,组分隔符)
- U+001E(RS,记录分隔符)
- U+001F(US,单元分隔符)
- U+D800 到 U+DFFF(代理对区域,未分配的 Unicode 代理字符)
- U+FFFE 和 U+FFFF(非字符,保留用于特殊用途)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




