我想找出 Oracle 中的 VARCHAR2 列不支持哪些字符。当我使用 asciistr(column) <> 列(下面提供的查询)过滤 VARCHAR2 字段时,我发现某些字符被“BF”代码替换。我想找出这些字符是什么,以便我可以在收集数据本身时添加一个条件来排除它们。
查询:
select name, asciistr(name) as encoded_name from table
where asciistr(name) <> name
输出:
名字 | 编码名称 |
---|---|
as¿d | 作为BFd |
b¿ef | b BFef |
我想识别 VARCHAR2 列中被
¿
字符替换的字符。
要识别 Unicode 字符
¿
或 '\00bf'
,请使用如下条件:
select name,
asciistr(name) as encoded_name
from table
where REGEXP_SUBSTR(name, unistr('\00bf'), 1) is not null;
要识别所有包含任何 Unicode 字符的名称,查询是:
select name,
asciistr(name) as encoded_name
from table
where REGEXP_SUBSTR(asciistr(name), '\\[[:xdigit:]]{4}') is not null
要替换 Unicode 字符,请使用查询:
select name, asciistr(name),
replace(name, unistr('\00bf')) as replace_single_unicode,
REGEXP_REPLACE(asciistr(name), '\\[[:xdigit:]]{4}', '') as replace_all_unicode
from t0;