O Problema
A língua portuguesa gera diversos problemas para os DBA, um dos mais comuns esta no fato dos usuários querem digitar Joao (sem acento) em uma caixa de busca e querer que o banco localizar o João (com acento), para solucionar este problema no postgres você pode criar uma function que remove os acentos durante as consultas.
A Solução
CREATE OR REPLACE FUNCTION "public"."sem_acentos" (VARCHAR) RETURNS VARCHAR AS $body$ SELECT TRANSLATE($1, 'áéíóúàèìòùãõâêîôôäëïöüçÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇ', 'aeiouaeiouaoaeiooaeioucAEIOUAEIOUAOAEIOOAEIOUC') $body$ LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Como Usar
SELECT pss_telefone WHERE sem_acentos(pss_nome) LIKE sem_acentos('%joao%')
Essa consulta irá retornar todos os João, com ou sem acento.



Em SQL Server esse problema pode ser ultrapassado usando uma COLLATION que seja AI (insensível à acentuação). Não existe algo de equivalente para Postgres?
Ainda não encontrei algo nativo para resolver este problema, se alguém tiver uma forma mais interessante posta ai
Não te recomendava usar isso para fazer filtros em tabelas grandes, visto que nesse caso ele tem que percorrer todos os campos e “transformá-los” através da função. Quanto muito, se não conseguires uma COLLATION como o Manuel Padilha indica, e muito bem, recomendo mesmo é a teres um campo onde guardes o valor já sem acentos.
Ocupa mais espaço mas poupa-te muito nos queries
Essa tbm eh outra solução, estes dias tava fazendo uns “testes” em uma loja virtual e acabei descobrindo que eles tinham na tabela produto um campo chamado nome_sem_acento para resolver este problema
no mysql, se estiver com o collate correto, é só fazer o select e pronto
Galera segundo meu brother Juliano a parada é só colcar o banco em latin1 e a página em UTF-8.