March 9, 2023

[ORACLE] - Função para remover acentos

Recentemente eu precisei tratar vários dados antes de enviar para uma API, uma dessas trativas era enviar o resultado de uma query sem acentuações. Sendo assim, criei uma função que recebe uma string para poder remover os caracteres especiais, veja como é fácil!

create or replace FUNCTION FUN_CVT_REMOVE_ACENTO 
(P_TEXTO IN VARCHAR2) RETURN VARCHAR2 AS
V_TEXTO_CONVERTIDO VARCHAR(400) := '';
BEGIN
   SELECT TRANSLATE(UPPER(P_TEXTO), 
          'ŠŽšžŸÃÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜÏÖÑÝåáÇçéíóúàèìòùâêîôûãõëüïöñýÿ<>', 
          'SZszYAACEIOUAEIOUAEIOUAOEUIONYaacceiouaeiouaeiouaoeuionyy') 
     INTO V_TEXTO_CONVERTIDO
   FROM DUAL;
   
   RETURN V_TEXTO_CONVERTIDO;
END FUN_CVT_REMOVE_ACENTO;

No exemplo acima a função TRANSLATE já faz todo o trabalho de substituir um caractere por outro.