如何识别文本范围内的非utf8符号?



在我们的数据库中,我们有拉丁字母和西里尔字母,这些字符都很好。但是,有时人们输入的字符显示为?或广场。是否有一种方法可以找到这些特定的符号,因为手动查找具有40万条记录的几个表中的一个错误是疯狂的。

我已经寻找了在线解决方案,我可以加载我的数据作为文本,我已经尝试过notepad++,但要么我得到所有的西里尔字母标记,要么我没有得到任何东西。

编辑:l .􀈉.D。是一个示例。

根据字符的ASCII值可以过滤文本。这里我假设所有大于65534的字符都在正常范围之外。您可以根据您的要求修改范围。这里的db提琴

with test (col) as (
select 
'L.A.D' 
from 
dual 
union all 
select 
'L.􀈉.D.' 
from 
dual
) 
select 
col, 
case when max(ascii_of_one_character) >= 65535 then 'NOT OK' else 'OK' end result 
from 
(
select 
col, 
substr(col, column_value, 1) one_character, 
ascii(
substr(col, column_value, 1)
) ascii_of_one_character 
from 
test cross 
join table(
cast(
multiset(
select 
level 
from 
dual connect by level <= length(col)
) as sys.odcinumberlist
)
)
) 
group by 
col
having max(ascii_of_one_character) >= 65535;

相关内容

  • 没有找到相关文章

最新更新