Consulta ignorando acentuação

09/10/2013

0

Olá pessoal...

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

Fafa

Responder

Posts

10/10/2013

Jair N.

Bom Dia, seguinte, não sei se na UTF8 permite mas como uso o LATIN1 tem uma função interna "TO_ASCII()"

Exemplo: SELECT TO_ASCII('Não será cinqüenta cães')

Veja se funciona...

Atc,

()
Olá pessoal...

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?
Responder

10/10/2013

Deivison Melo

Crie uma função e faça uso da mesma em sua instrução SQL

[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!
Responder

10/10/2013

Fafa

Criei uma função que foi a mencionada no tópico, mas o comando sql não está retornando nada:

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.
Responder

10/10/2013

Jair N.

Olhe a comparação que você estã fazendo:
Exemplo com erro:
SELECT remove_acentos('júlio')
SELECT remove_acentos('julio')
São diferentes (maiúsculas e minúsculas)


Criei uma função que foi a mencionada no tópico, mas o comando sql não está retornando nada:

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.
Responder

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!!!
Responder

10/10/2013

Fafa

Agora sim funcionou...
Muito obrigada pela ajuda!

Até mais.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar