暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 无效的XML字符错误-如何从VARCHAR2数据库列中查找无效字符?

ASKTOM 2021-07-21
607

问题描述

你好,

甲骨文新手在这里。

对于打印到报表上的XML数据,我收到此错误 “字符引用” & #56256 “是无效的XML字符”。导致问题的XML数据来自数据库中的VARCHAR2数据列。
我已经将列过滤到我创建的单独备份表中,我想浏览记录,以便找到这个无效字符在哪里。
然后我需要写一个更新语句,用一个有效的替换无效字符。
我不知道如何做到这一点。是否有一个正则表达式,我可以用SELECT语句编写?

我在下面尝试过,但他们没有提出任何结果:

select *
from tabname 
where instr(colname,chr(56256)) > 0;
复制


select *
from tabname 
where colname like unistr('%\dbc0%'); 
复制


很高兴有人能帮忙。

谢谢!

专家解答

在XML中,您可以使用 & # NNNN; 形式中的代码来表示ISO/IEC 10646字符集中的条目。

例如,& #65是字符A,因此XML处理可以将此代码更改为字母A:
select xmltype ( 'A' ).extract ('test') x
from   dual;

X                
A   
复制


& #56256是无效代码-数字太长。所以我think你需要搜索确切的文本 & #56256,not将此转换为ascii/unicode。例如:
select *
from   tabname 
where  instr ( colname, '�' ) > 0;
复制




文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论