Consulta ignorando acentuação
09/10/2013
0
Estou com o seguinte problema:
Preciso consultar a tabela de CEPS pelo endereço, mas quero ignorar a acentuação. O banco de dados é UTF8. Depois de tanta busca, encontrei a seguinte função:
CREATE OR REPLACE FUNCTION remove_acentos(character varying)
RETURNS character varying AS
$BODY$
SELECT TRANSLATE(upper($1),
'áéíóúàèìòùãõâêîôôäëïöüçÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇ',
'aeiouaeiouaoaeiooaeioucAEIOUAEIOUAOAEIOOAEIOUC')
$BODY$
LANGUAGE sql VOLATILE
COST 100;
ALTER FUNCTION remove_acentos(character varying) OWNER TO postgres;
SELECT * FROM ceps_completo WHERE (remove_acentos(endereco) = remove_acentos('julio'))
Mas, a consulta não retorna nada, sendo que tenho registros com júlio e julio...
Existe alguma forma para resolver isso?
Fafa
Posts
10/10/2013
Jair N.
Exemplo: SELECT TO_ASCII('Não será cinqüenta cães')
Veja se funciona...
Atc,
()
Estou com o seguinte problema:
Preciso consultar a tabela de CEPS pelo endereço, mas quero ignorar a acentuação. O banco de dados é UTF8. Depois de tanta busca, encontrei a seguinte função:
CREATE OR REPLACE FUNCTION remove_acentos(character varying)
RETURNS character varying AS
$BODY$
SELECT TRANSLATE(upper($1),
'áéíóúàèìòùãõâêîôôäëïöüçÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇ',
'aeiouaeiouaoaeiooaeioucAEIOUAEIOUAOAEIOOAEIOUC')
$BODY$
LANGUAGE sql VOLATILE
COST 100;
ALTER FUNCTION remove_acentos(character varying) OWNER TO postgres;
SELECT * FROM ceps_completo WHERE (remove_acentos(endereco) = remove_acentos('julio'))
Mas, a consulta não retorna nada, sendo que tenho registros com júlio e julio...
Existe alguma forma para resolver isso?
10/10/2013
Deivison Melo
[url]http://postgresql.1045698.n5.nabble.com/Funcao-para-retirar-acentos-e-colocar-em-minusculo-ou-maisculo-td2030233.html[/url]
Abração e bons códigos!
10/10/2013
Fafa
SELECT * FROM ceps_completo WHERE (remove_acentos(endereco) = remove_acentos('julio'))
Não sei se o problema está na função ou no comando sql...
Obrigada.
10/10/2013
Jair N.
Exemplo com erro:
SELECT remove_acentos('júlio')
SELECT remove_acentos('julio')
São diferentes (maiúsculas e minúsculas)
SELECT * FROM ceps_completo WHERE (remove_acentos(endereco) = remove_acentos('julio'))
Não sei se o problema está na função ou no comando sql...
Obrigada.
10/10/2013
Deivison Melo
Comparação falsa select 'S' valor from dual where fn_remove_acento(upper('josé')) = upper('josé') Comparação verdadeira select 'S' valor from dual where fn_remove_acento(upper('josé')) = upper('jose')
PS. Código feito no oracle!
Abração e bons códigos!!!
Clique aqui para fazer login e interagir na Comunidade :)