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.