Re: [pgbr-geral] RES: problema com acentos no UTF8

2009-06-04 Por tôpico Adriano de Souza Barbosa
Pelo JPA tem como usar Query Native, quando precisar alguma função do 
banco use ela...

Adriano

Leandro Müller escreveu:
 Obrigado turma.

 Deu certo aqui, porem devido toda a aplicação trabalhar com JPA (Java)
 teremos que modificar os sistemas envolvidos para trabalhar direto com SQL
 chamando a função.

 Obrigado Osvaldo.


 At.

 Leandro Müller
 Analista de Sistemas 





 -Mensagem original-
 De: pgbr-geral-boun...@listas.postgresql.org.br
 [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Osvaldo
 Kussama
 Enviada em: quarta-feira, 3 de junho de 2009 16:27
 Para: Comunidade PostgreSQL Brasileira
 Assunto: Re: [pgbr-geral] problema com acentos no UTF8

 2009/6/3 Leandro Müller leandr...@muriki.com.br:
   
 Sou novo nesta lista, nesses últimos meses estou migrando uma base de
 
 dados
   
 de 4gb para postgresql 8.3.7, utilizávamos mysql na empresa, mas ficou
 
 muito
   
 lento devido a complexidade de relatórios e diversos recursos que
 
 precisamos
   
 agora.
 

 Seja bem vindo!


   
 Bom o único problema que tivemos com o banco de dados é quanto a pesquisa
 com ilike em palavras com acentos.

 Exemplo:

 Select nome from cliente where nome ilike ‘joao%’;

 O João não lista, fiz testes com a versão 8.4 e o mesmo ocorre, esse banco
 esta na codificação UTF8
 

 Sim João é diferente de Joao e também diferente de joão, JOÃO e joao.


   
 Tentei criar um banco como latin1 porem o post não aceita criar.
 

 Você não pode mudar mas ele aceita criar (vide initdb) mas tem que ser
 compatível com o locale de seu S.O.


   
 Alguém tem idéia de que tipo configuração devo fazer para fazer pesquisas
 com acento?

 

 Quando o encoding é LATIN1, LATIN2, LATIN9 ou WIN1250 podemos usar a
 função to_ascii:
 http://www.postgresql.org/docs/current/interactive/functions-string.html

 Quando se utiliza o UTF8 o pessoal tem utilizado uma função de
 conversão como esta:

 CREATE FUNCTION sem_acento(text) RETURNS text  AS $$
 SELECT translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
 'aiiioAIIIOcC');
 $$
 LANGUAGE sql IMMUTABLE STRICT;

 Ficaria assim:
 SELECT nome FROM cliente WHERE sem_acento(nome) ilike sem_acento(‘joao%’);

 Caso faça uso intensivo desta query considere a criação de um índice
 funcional para melhorar a performance.

 Osvaldo
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

   
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] RES: problema com acentos no UTF8

2009-06-03 Por tôpico Leandro Müller
Obrigado turma.

Deu certo aqui, porem devido toda a aplicação trabalhar com JPA (Java)
teremos que modificar os sistemas envolvidos para trabalhar direto com SQL
chamando a função.

Obrigado Osvaldo.


At.

Leandro Müller
Analista de Sistemas 





-Mensagem original-
De: pgbr-geral-boun...@listas.postgresql.org.br
[mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Osvaldo
Kussama
Enviada em: quarta-feira, 3 de junho de 2009 16:27
Para: Comunidade PostgreSQL Brasileira
Assunto: Re: [pgbr-geral] problema com acentos no UTF8

2009/6/3 Leandro Müller leandr...@muriki.com.br:

 Sou novo nesta lista, nesses últimos meses estou migrando uma base de
dados
 de 4gb para postgresql 8.3.7, utilizávamos mysql na empresa, mas ficou
muito
 lento devido a complexidade de relatórios e diversos recursos que
precisamos
 agora.

Seja bem vindo!



 Bom o único problema que tivemos com o banco de dados é quanto a pesquisa
 com ilike em palavras com acentos.

 Exemplo:

 Select nome from cliente where nome ilike ‘joao%’;

 O João não lista, fiz testes com a versão 8.4 e o mesmo ocorre, esse banco
 esta na codificação UTF8

Sim João é diferente de Joao e também diferente de joão, JOÃO e joao.



 Tentei criar um banco como latin1 porem o post não aceita criar.

Você não pode mudar mas ele aceita criar (vide initdb) mas tem que ser
compatível com o locale de seu S.O.



 Alguém tem idéia de que tipo configuração devo fazer para fazer pesquisas
 com acento?


Quando o encoding é LATIN1, LATIN2, LATIN9 ou WIN1250 podemos usar a
função to_ascii:
http://www.postgresql.org/docs/current/interactive/functions-string.html

Quando se utiliza o UTF8 o pessoal tem utilizado uma função de
conversão como esta:

CREATE FUNCTION sem_acento(text) RETURNS text  AS $$
SELECT translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
'aiiioAIIIOcC');
$$
LANGUAGE sql IMMUTABLE STRICT;

Ficaria assim:
SELECT nome FROM cliente WHERE sem_acento(nome) ilike sem_acento(‘joao%’);

Caso faça uso intensivo desta query considere a criação de um índice
funcional para melhorar a performance.

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral