Use:

select nick from tabela where upper(to_ascii(nick))
like upper(to_ascii'%termodepesquisa%'));

TO_ASCII retira os acentos, use nessa ordem: upper(to_ascii para evitar
problemas com caracteres_acentuados + caixa_alta.

Se precisa de uma tabela rápida, crie um campo (nick_ascii) com uma trigger
gravando nick_ascii = upper(to_ascii(nick))

Jorge Vilela


2010/3/11 Adriano Ribeiro <[email protected]>

> Olá a todos.
>
> Estamos com o famoso problema de acentuação em nosso PGSQL 8.4.
> Vejam:
>
> select nick from tabela;
> ------
> "OE"
> "Nívea"
> "Nágila"
> "Nilton"
> "Nuno"
>
>
> select nick from tabela order by nick;
> ------
> "Nilton"
> "Nuno"
> "Nágila"
> "Nívea"
> "OE"
>
> Neste exemplo Nágila deveria vir ANTES de Nilton... porém por ter acento o
> pg faz isso...
>
> Outro problema é o uso do LIKE.
> select nick from tabela where nick like '%nagila%';
> ------
> no records
>
> ele não retorna o registro "Nágila".
>
>
> Nosso aplicativo é desenvolvido com WebObjects (Java) e as queries são
> montadas por ele (como um Hibernate faria).
> Portanto *não* é interessante para nós mudarmos as queries "nã mão" pois o
> WO as monta muito bem.
> A questão apenas é esta de acentuação no PGSQL.
> Com outros bancos não temos este problema (um MS SQL Server por exemplo).
>
> O mesmo acontece usando um PGAdmin3, pois usamos as queries da forma mais
> natural possível (denovo: sem funções ou iLike).
>
> Existe alguma forma de se arrumar isso?
>
> Haverá correção no PG 9? Alguém sabe?
>
>
> Abraço a todos,
>
> *Adriano Ribeiro*
> [email protected]
> http://www.play3g.com.br
>
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a