无效的 XML 字符错误 - 如何从 VARCHAR2 数据库列中查找无效字符?
Posted
技术标签:
【中文标题】无效的 XML 字符错误 - 如何从 VARCHAR2 数据库列中查找无效字符?【英文标题】:Invalid XML character Error - How to find the invalid character from a VARCHAR2 database column? 【发布时间】:2021-09-15 06:26:29 【问题描述】:这里是 Oracle 新手。
对于打印到报表上的 XML 数据,我收到此错误“字符引用“”是无效的 XML 字符”。 导致问题的 XML 数据来自数据库中的 VARCHAR2 数据列。 我已经过滤掉了该列,现在我想通过记录来找到这个无效字符在哪个记录中,并编写一个更新语句,用一个有效字符替换无效字符。 我不知道该怎么做。 有没有我可以用 SELECT 语句为此编写的正则表达式? 有人可以帮我吗?
谢谢!
【问题讨论】:
where your_column like unistr('%\dbc0%')
是否找到违规行?
嗨,Alex,不,这不会获取任何结果...
【参考方案1】:
要确定哪些条目具有您要消除的字符,您可以在列中搜索该字符
select colname
from tabname
where instr(colname,chr(56256)) > 0;
你可以用更新语句替换:
update tablname
set colname = replace(colname,chr(56256),'replacementstring')
where instr(colname,chr(56256)) > 0;
【讨论】:
嗨 Niall,select 语句不返回任何结果...我将列值的备份作为单独的表并尝试使用 SET text = REPLACE(text, CHR( 56256)) ,然后它说所有行都已更新,而不是零。我现在很困惑。 如果您不使用 where 语句,它会更新所有行 - 即使这会使行保持不变。尝试使用 ascii() 函数逐个字符地查看错误字符串之一,以获取字符串中错误字符的确切字符代码。 嗨 Niall,仍然没有获取结果...我可以采取其他替代方法来解决这个问题吗? 在哪里可以找到坏字符的 ascii 代码,使用“尝试使用 ascii() 函数逐个字符查看坏字符串,以获取坏字符的确切字符代码在你的弦上。” ? 嗨,尼尔,是的。试过ascii()、instr()、unistr()....没有结果。以上是关于无效的 XML 字符错误 - 如何从 VARCHAR2 数据库列中查找无效字符?的主要内容,如果未能解决你的问题,请参考以下文章