在 Oracle 中将重音字符替换为非重音字符 + 一个“撇号”

问题描述

我想用没有重音的相同字符替换重音字符并添加撇号。 例如:

città universitaria > citta' universitaria
Via Libertà > Via Liberta'

我用过:

SELECT CONVERT ('città universitaria','US7ASCII','UTF8')
FROM dual;

它返回“citta universitaria”,这很好,但我需要在“a”之后添加撇号。

谢谢

解决方法

使用简单的 REGEXP_REPLACE 添加撇号 - 在第一个模式 ([àèòìù]) 中添加您需要转换的其他字符

select
REGEXP_REPLACE('città universitaria','([àèòìù])',q'{\1'}') txt
FROM dual;

TXT                 
--------------------
città' universitaria

完整查询

SELECT CONVERT (REGEXP_REPLACE('città universitaria',q'{\1'}'),'US7ASCII','UTF8') txt
FROM dual;

TXT                 
--------------------
citta' universitaria