Função para remover acentos em select
Dae pessoal, estou quebrando cabeça a algum tempo para descobrir a melhor forma de fazer uma busca, estou desenvolvendo um sistema para um guia telefônico e preciso fazer a busca pelos contatos, só que se o atendendo informar 'joão', a busca deve retornar todos os cadastrado com 'joão' e 'joao'.
Estava pensando em algo como:
SELECT nome FROM clientes WHERE RetiraAcento(nome) LIKE '%joao%';
Mas não sei se é possível utilizar uma função desta forma, e caso seja possível, alguém poderia me dar uma luz para criar essa função RetiraAcento()? Pois não sei quase nada de Functions! :(
Vi alguns exemplos na internet como este.
CREATE FUNCTION RetiraAcento(Texto VARCHAR(500))
RETURNS varchar(500) CHARSET utf-8
DETERMINISTIC
BEGIN
declare semAcento varchar(500);
SELECT lower(Texto) INTO semAcento;
SELECT REPLACE(semAcento,’ã’,'a’) INTO semAcento;
SELECT REPLACE(semAcento,’á’,'a’) INTO semAcento;
SELECT REPLACE(semAcento,’â’,'a’) INTO semAcento;
SELECT REPLACE(semAcento,’à’,'a’) INTO semAcento;
SELECT REPLACE(semAcento,’ê’,'e’) INTO semAcento;
SELECT REPLACE(semAcento,’é’,'e’) INTO semAcento;
SELECT REPLACE(semAcento,’ë’,'e’) INTO semAcento;
SELECT REPLACE(semAcento,’ï’,'i’) INTO semAcento;
SELECT REPLACE(semAcento,’í’,'i’) INTO semAcento;
SELECT REPLACE(semAcento,’ó’,'o’) INTO semAcento;
SELECT REPLACE(semAcento,’ô’,'o’) INTO semAcento;
SELECT REPLACE(semAcento,’ö’,'o’) INTO semAcento;
SELECT REPLACE(semAcento,’ú’,'u’) INTO semAcento;
SELECT REPLACE(semAcento,’ü’,'u’) INTO semAcento;
SELECT REPLACE(semAcento,’ç’,'c’) INTO semAcento;
SELECT REPLACE(semAcento,’ñ’,'n’) INTO semAcento;
SELECT upper(SemAcento) INTO semAcento;
RETURN semAcento;
END;
Se alguém manjar ajuda ae!
Vlw
Discussão (9)
Carregando comentários...