JotaComm, quase que eu entendi o que explicou  :\

No teu exemplo com colate UTF8 ele trouxe somente 2 registros ou seja ele só 
ignorou o Maiusculas e Minusculas e não os acentos.

Eu precisava ignorar os acentos...

Eu fiz uma funcao “sem_acentos()” e estou usando ela... está dando certo, mas 
queria usar algo mais elegante já existente no postgres.

Mas continuo analisando seu exemplo, muito obrigado



--------------------------------------------------------------------------------

Marcelo Silva
--------------------------------------------------
Desenvolvedor Delphi, PHP
msn: marc...@ig.com.br
cel.: (11) 9693-4251


From: JotaComm 
Sent: Friday, October 07, 2011 11:53 AM
To: Marcelo Silva (IG) ; Comunidade PostgreSQL Brasileira 
Subject: Re: [pgbr-geral] Desculpem, mais uma vez sobre acentos (LATIN1)

Olá,


Em 7 de outubro de 2011 11:21, Marcelo Silva (IG) <marc...@ig.com.br> escreveu:

  Pessoal, peço desculpas por trazer mais uma vez esse assunto a lista, mas 
vira e mexe temos esse problema com acentos na lingua portuguesa.

  Segundo a necessidade da empresa eu preciso gravar os dados exatamentes como 
são, por exemplo Maiusculas e Minusculas nos nomes e afins,
  caracteres especiais e acentos como são na lingua portuguesa mesmo.

  Estou trabalhando com banco UTF-8 pois de inicio como sou novo no PG acabei 
criando assim...
  Hoje tenho a base populada e estou tento problemas em pesquisas.

  Estava fazendo testes com uma base criada em LATIN1, ao restaurar a minha 
base de UTF8 para LATIN1, ele restaura sem problemas, 
  mas na pesquisa ele se comporta como o UTF8, então tenho que usar a função 
“to_ascii” para ele trazer o que quero.

  select nome from clientes where (to_ascii(nome) like to_ascii(‘%JOÃO%’))

  A base foi criada assim:

  CREATE DATABASE teste
    WITH OWNER = postgres
         ENCODING = 'LATIN1'
         TABLESPACE = pg_default
         LC_COLLATE = 'C'
         LC_CTYPE = 'C'
         CONNECTION LIMIT = -1;

  Sendo que foi criada em Latin1 ele não deveria ignorar os acentos e 
caracteres especiais e até mesmo Maiuscula e Minuscula?

  Será que foi porque eu restaurei UTF8 para LATIN1 ?

  Existe uma forma mais simples para se trabalhar com acentos no postgres ou o 
metodo é esse mesmo?

O seu problema não está no Encoding do banco e sim, nas regras de localização.

Se você utilizar LC_COLLATE='pt_BR.UTF-8' (utilizado para ordenação) e 
LC_CTYPE='pt_BR.UTF-8' (classificação) você não terá este tipo de problema.

Veja um pequeno exemplo:

initdb -D /tmp/data --locale=C --encoding=LATIN1


postgres=# SHOW lc_ctype;
lc_ctype 
----------
C
(1 row)

postgres=# SHOW lc_collate;
lc_collate 
------------
C
(1 row)

CREATE TABLE teste(nome VARCHAR);

INSERT INTO teste VALUES ('João');
INSERT INTO teste VALUES ('JOÃO');
INSERT INTO teste VALUES ('JOAO');
INSERT INTO teste VALUES ('Joao');

SELECT * FROM teste WHERE nome ILIKE 'Joã%';
nome  
-------
João
(1 row)

Agora veja outro exemplo:

initdb -D /tmp/data --locale=pt_BR.utf8 --encoding=UTF8

postgres=# SHOW lc_collate;
lc_collate 
------------
pt_BR.utf8
(1 row)

postgres=# SHOW lc_ctype;
  lc_ctype  
------------
pt_BR.utf8
(1 row)

CREATE TABLE teste(nome VARCHAR);

INSERT INTO teste VALUES ('João');
INSERT INTO teste VALUES ('JOÃO');
INSERT INTO teste VALUES ('JOAO');
INSERT INTO teste VALUES ('Joao');


SELECT * FROM teste WHERE nome ILIKE 'Joã%';
nome 
------
João
JOÃO
(2 rows)

Espero ter sido claro na minha explanação.
 

  obs.: O MySQL5 basta criar em LATIN1 e ele ignora Acentos, Caracteres 
especiais e é CaseInsensitive


  Marcelo Silva
  --------------------------------------------------
  Desenvolvedor Delphi, PHP
  msn: marc...@ig.com.br
  cel.: (11) 9693-4251

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




Abraços
-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a