Tratando Caracteres Especiais no Mysql

Caracteres especiais em bancos de dados podem ser um desafio, especialmente ao realizar pesquisas e consultas em dados que contêm acentos, cedilhas e outros caracteres não-ASCII. Neste artigo, aprenderemos uma prática função para remover tratar caracteres especiais, tornando as operações de busca e filtragem mais precisas e eficientes.

Abaixo a função:

DELIMITER //

CREATE FUNCTION remove_accent(
String VARCHAR(255)
)
RETURNS VARCHAR(255)
BEGIN
/****************************************************************************************************************/
/** RETIRA ACENTUAÇÃO DAS VOGAIS **/
/****************************************************************************************************************/
SET String = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(String, 'á', 'a'), 'à', 'a'), 'â', 'a'), 'ã', 'a'), 'ä', 'a');
SET String = REPLACE(REPLACE(REPLACE(REPLACE(String, 'é', 'e'), 'è', 'e'), 'ê', 'e'), 'ë', 'e');
SET String = REPLACE(REPLACE(REPLACE(REPLACE(String, 'í', 'i'), 'ì', 'i'), 'î', 'i'), 'ï', 'i');
SET String = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(String, 'ó', 'o'), 'ò', 'o'), 'ô', 'o'), 'õ', 'o'), 'ö', 'o');
SET String = REPLACE(REPLACE(REPLACE(REPLACE(String, 'ú', 'u'), 'ù', 'u'), 'û', 'u'), 'ü', 'u');

/****************************************************************************************************************/
/** RETIRA ACENTUAÇÃO DAS CONSOANTES **/
/****************************************************************************************************************/
SET String = REPLACE(String, 'ý', 'y');
SET String = REPLACE(String, 'ñ', 'n');
SET String = REPLACE(String, 'ç', 'c');

/****************************************************************************************************************/
/** SUBSTITUI ESPAÇOS POR UNDERLINE (_) **/
/****************************************************************************************************************/
SET String = REPLACE(String, ' ', '_');

RETURN String;
END //

DELIMITER ;


Para utilizá-la basta o comando:

SELECT remove_accent('o cão é bravo');

E teremos o resultado tratado.


Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Qual o Resultado? *