在我们的数据库中,我们有拉丁字母和西里尔字母,这些字符都很好。但是,有时人们输入的字符显示为?或广场。是否有一种方法可以找到这些特定的符号,因为手动查找具有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;