删除Oracle SQL中的非英文字符



我正在开发一个记录人名的系统。我们需要去掉名字中的重音符号,以适应遗留系统。其中一个虚构的例子是RÉOUL TÉLITINO,我们需要将É转换为A,将É转化为E等等。我这样做有困难。信息

SELECT *
  FROM v$nls_parameters
WHERE parameter LIKE '%CHARACTERSET'

提供

**Parameter**:INLS_CHARACTERSET 
**Value**: AL32UTF8
   and
**Parameter**: NLS_NCHAR_CHARACTERSET     **Value**: AL16UTF16|

我尝试过的:

排序规则

select 'RÃOUL TÉLITINO' collate SQL_Latin1_General_Cp1251_CS_AS

但我有

ORA-12746:未识别的排序规则名称"SQL_LATIN1_GENERAL_CP1251_CS_AS";

CONVERT()

首次尝试

select CONVERT('JUAN ROMÄN', 'US7ASCII') from dual;

给出理想的'JUAN ROMAN',但

select CONVERT('RÃOUL TÉRK', 'US7ASCII') from dual;

错过了Ã,即:R?OUL TERK

第二次尝试

我尝试过的其他参数是AL16UTF16(但这不会改变输入字符串(和AL16UTF16AL24UTFFSSAL32UTF8,但它们可以转换为中文字符。

您尝试过Translate((吗?

translate(text,
'ÂÃÄÀÁÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝŸàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ',
'AAAAAACEEEEIIIINOOOOOOUUUUYYaaaaaaceeeeiiiinoooooouuuuyy')

尝试translate函数,它通过一次替换一个字符,将字符串中的一个字符序列替换为另一组字符。

例如

select translate(WORD,'ÃÉÄ','ΑΕA') from dual

或者你自己的

select translate('JUAN ROMÄN', 'ÃÄ','AA') from dual;

除了翻译,您还可以使用正则表达式。下面的帖子可能对你有帮助。

从Oracle Varchar2 中查找和删除非ascii字符

相关内容

  • 没有找到相关文章

最新更新