Oracle SQL(OTBI数据模型)无法替换U+FFFE字符求助
解决U+FFFE字符替换失败的问题
你的数据中包含U+FFFE(十进制65534)字符,尝试多种SQL替换语句均无效,可从以下几个方向排查解决:
1. 确认字符实际存储的码点
先用查询语句确认目标字符的真实码点,避免因编码转码导致匹配错误:
- PostgreSQL:
SELECT UNICODE(SUBSTRING(my_column, POSITION(CHR(65534) IN my_column), 1)) FROM your_table; - MySQL:
SELECT ORD(SUBSTRING(my_column, LOCATE(CHAR(65534), my_column), 1)) FROM your_table;
2. 显式指定Unicode编码调用CHR函数
部分数据库的CHR默认使用ASCII编码,需显式指定Unicode才能正确生成U+FFFE:
- PostgreSQL:
REPLACE(my_column, CHR(65534 USING UNICODE), ' ') - MySQL:
REPLACE(my_column, CHAR(65534 USING utf8mb4), ' ')
3. 二进制层面直接替换
如果编码问题导致字符无法被文本函数识别,尝试从二进制层面替换:
- PostgreSQL:
UPDATE your_table SET my_column = REPLACE(my_column::bytea, '\xff\xfe'::bytea, ' '::bytea)::text; - MySQL:
UPDATE your_table SET my_column = REPLACE(CONVERT(my_column USING binary), CONVERT(CHAR(65534) USING binary), CONVERT(' ' USING binary));
4. 同时排查BOM相关字符
U+FFFE是UTF-16的反向BOM,可能和U+FEFF(正向BOM)同时存在,尝试一并替换:REGEXP_REPLACE(my_column, '[\x{FFFE}\x{FEFF}]', ' ')
内容的提问来源于stack exchange,提问作者stocke
相关产品推荐
相关产品推荐

