Removendo Acentos (Função TRANSLATE)
Autor: Prof. Paulo Kaupa
Caso em seu dia a dia ocorra a necessidade de remover acentos de uma string ou de um valor inserido em um campo, pode-se usar a função TRANSLATE do PL/SQL .
A função TRANSLATE substitui uma sequencia de caracteres por outra. Neste artigo a função TRANSLATE será usada para substituir caracteres acentuados, mas pode ser usada em outras situações para substituir qualquer sequencia de caracteres.
Sintaxe:
TRANSLATE
(
PALAVRA_ou_CAMPO,
‘CARACTER A SER SUBSTITUIDO’,
‘CARACTER DE SUBSTITUIÇÃO’
);
Exemplo 1:
Aplicação da função TRANSLATE diretamente em palavras (strings).
SELECT
TRANSLATE (
'Ação, Macarrão, José',
'ŠŽšžŸÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜÏÖÑÝåáçéíóúàèìòùâêîôûãõëüïöñýÿ',
'SZszYACEIOUAEIOUAEIOUAOEUIONYaaceiouaeiouaeiouaoeuionyy')
FROM DUAL;
No Exemplo 1, as palavras 'Ação, Macarrão, José' foram apresentadas sem os acentos.
Exemplo 2:
Aplicação da função TRANSLATE em campos de uma tabela.
SELECT
TRANSLATE(
CAMPO_DA_TABELA,
'ŠŽšžŸÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜÏÖÑÝåáçéíóúàèìòùâêîôûãõëüïöñýÿ',
'SZszYACEIOUAEIOUAEIOUAOEUIONYaaceiouaeiouaeiouaoeuionyy')
FROM
TB_SUA_TABELA;
Na Prática (Atividade 1)
Nesta atividade será criada uma tabela com uma coluna que receberá palavras acentuadas. Em seguida a função TRANSLATE será usada para retirar os acentos no momento em que as palavras são apresentadas na tela
1 – Execute o script para a criação da tabela TB_PALAVRAS_ACENTUADAS:
CREATE TABLE TB_PALAVRAS_ACENTUADAS
(
PALAVRA VARCHAR2(20)
);
COMMIT;
2 – Insira palavras acentuadas na tabela TB_PALAVRAS_ACENTUADAS:
INSERT INTO TB_PALAVRAS_ACENTUADAS VALUES ('Ação');
INSERT INTO TB_PALAVRAS_ACENTUADAS VALUES ('Macarrão');
INSERT INTO TB_PALAVRAS_ACENTUADAS VALUES ('José');
COMMIT;
3 – Rode o Script a seguir:
SELECT
TRANSLATE(PALAVRA,
'ŠŽšžŸÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜÏÖÑÝåáçéíóúàèìòùâêîôûãõëüïöñýÿ',
'SZszYACEIOUAEIOUAEIOUAOEUIONYaaceiouaeiouaeiouaoeuionyy')
FROM
TB_PALAVRAS_ACENTUADAS;
3 – Observe que as palavras inseridas com acentos são apresentadas sem nenhum acento.
Na Prática (Atividade 2)
Nesta atividade será usada a TB_PALAVRAS_ACENTUADAS (criada na atividade 1). Em seguida a função TRANSLATE será usada em conjunto com um UPDATE para retirar os acentos das palavras diretamente na tabela, alterando definitivamente as palavras.
1 – O script a seguir irá atualizar definitivamente os dados da TB_PALAVRAS_ACENTUADAS:
UPDATE
TB_PALAVRAS_ACENTUADAS
SET
PALAVRA = TRANSLATE(PALAVRA,
'ŠŽšžŸÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜÏÖÑÝåáçéíóúàèìòùâêîôûãõëüïöñýÿ',
'SZszYACEIOUAEIOUAEIOUAOEUIONYaaceiouaeiouaeiouaoeuionyy');
COMMIT;
2 – Selecione os dados da TB_PALAVRAS_ACENTUADAS, repare que todos os acentos foram removidos.
SELECT
PALAVRA
FROM
TB_PALAVRAS_ACENTUADAS;