我正在使用 Oracle REGEXP_REPLACE 从客户端用于存储数据的 CLOB 自由文本字段中删除所有非标准 ascii(特殊)字符,一些用户从 Excel 复制和粘贴,这会导致从 CLOB 读取文本时出现问题。我已经设法摆脱所有特殊字符并保持段落的布局等。
我遇到的问题是,当我将清理后的字段与原始字段进行比较时,当然在转换为 char 字符串之后,它是否返回了它们之间没有区别的行,我已经提取了两个值并且没有区别在大多数情况下。它正在返回整个数据集,而不仅仅是那些已被清理的数据集。我已经没有想法了
仅供参考,维护布局的很大一部分意味着我需要保留回车 CHR(13)
下面是查询
select *
from (
select incident, entity,
trim(to_char(textarea)) textarea,
trim(to_char(regexp_replace(textarea,'[^' || CHR(13) || CHR(32) || '-' || CHR(126) || ']',''))) regexp_text
from response
) tab
where tab.regexp_text <> tab.textarea
我尝试了许多不同的组合,包括修剪空白和子串较小的字符串等,但没有运气