Consulta ignorando acentuação
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?
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
Curtidas 0
Respostas
Jair N.
09/10/2013
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,
()
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?
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?
GOSTEI 0
Deivison Melo
09/10/2013
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!
[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!
GOSTEI 0
Fafa
09/10/2013
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.
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.
GOSTEI 0
Jair N.
09/10/2013
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)
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.
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.
GOSTEI 0
Deivison Melo
09/10/2013
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!!!
GOSTEI 0
Fafa
09/10/2013
Agora sim funcionou...
Muito obrigada pela ajuda!
Até mais.
Muito obrigada pela ajuda!
Até mais.
GOSTEI 0