为什么不翻译某些角色?

时间:2014-03-06 13:06:45

标签: oracle varchar2

我正在尝试使用翻译从VARCHAR2删除某些字符。然而,字符160(某种空格)和243(段落控制字符?)似乎是“幻像”字符,INSTRTRANSLATE无法察觉。 LENGTH有效,但前提是它是字符串中唯一的字符。 LENGTH(CHR(160))会返回1,但当您认为它会返回LENGTH(CHR(160) || CHR(110))时,1也会返回2。我发现REPLACE可以从字符串中剥离这些幻像字符,但我更喜欢翻译,因为它更容易阅读和维护,而长嵌套或REPLACE函数只是很麻烦。

是否有其他方法可以在不使用替换的情况下从VARCHAR2中删除这些字符?

编辑:其他地方的字符243似乎注册为。但是,当我明确选择此字符时,Oracle没有问题。当我选择CHR(243)时,它只显示块替换字符。另外,this source指向段落字符243,这更有意义,因为这是一个控制代码。

1 个答案:

答案 0 :(得分:0)

使用正则表达式怎么样?这可以通过替换char 160或243来删除您的故障字符:

SQL> select regexp_replace('abc' || chr(160) || chr(243) || 'def', '(' || chr(160) || '|' || chr(243) || ')', '') from dual;

REGEXP
------
abcdef

SQL>