去除 Oracle 中的非英文字符 SQL
Strip non English characters in 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: unrecognied collation name
"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
(但这不会改变输入字符串)和 AL16UTF16
、AL24UTFFSS
、AL32UTF8
,但是这些转换汉字。
你试过 Translate() 了吗?
translate(text,
'ÂÃÄÀÁÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝŸàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ',
'AAAAAACEEEEIIIINOOOOOOUUUUYYaaaaaaceeeeiiiinoooooouuuuyy')
试试 translate 函数,它将字符串中的一系列字符替换为另一组字符,一次替换一个字符。
例如
select translate(WORD,'ÃÉÄ','ΑΕA') from dual
或者你自己的例子
select translate('JUAN ROMÄN', 'ÃÄ','AA') from dual;
除了翻译,您还可以使用正则 expression.Below post 可能对您有所帮助。
Finding and removing non ascii characters from an Oracle Varchar2
我正在开发一个记录人名的系统。我们需要去除名称中的重音以适应遗留系统。一个这样的虚构示例是 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: unrecognied collation name "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
(但这不会改变输入字符串)和 AL16UTF16
、AL24UTFFSS
、AL32UTF8
,但是这些转换汉字。
你试过 Translate() 了吗?
translate(text,
'ÂÃÄÀÁÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝŸàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ',
'AAAAAACEEEEIIIINOOOOOOUUUUYYaaaaaaceeeeiiiinoooooouuuuyy')
试试 translate 函数,它将字符串中的一系列字符替换为另一组字符,一次替换一个字符。
例如
select translate(WORD,'ÃÉÄ','ΑΕA') from dual
或者你自己的例子
select translate('JUAN ROMÄN', 'ÃÄ','AA') from dual;
除了翻译,您还可以使用正则 expression.Below post 可能对您有所帮助。
Finding and removing non ascii characters from an Oracle Varchar2