Olá,

essas regras são controladas pelas variáveis LC_COLLATE e LC_CTYPE (que são
definidas no initdb).
http://www.postgresql.org/docs/8.3/static/sql-createdatabase.html

Você tem que tomar cuidado também com a codificação do cliente onde você
está digitando...
Qual o valor das mesmas no caso onde o upper não retorna o esperado?

Luigi Castro Cardeles


2009/4/28 Prof. Benedito A. Cruz <[email protected]>

> Caros
>
>    Recentemente tive problemas com uma aplicação que funcionava em um
> banco LATIN1 mas dava problemas em um banco UTF-8. Depois de pesquisar
> um pouco detectei o seguinte comportamento no PG.
>
>    1) Num banco criado como LATIN1:
>
> postgres=# \l
>        List of databases
>   Name    |   Owner   | Encoding
> -----------+-----------+----------
>  xpto  | xxxadm | LATIN1
>  postgres  | postgres  | LATIN1
>  template0 | postgres  | LATIN1
>  template1 | postgres  | LATIN1
> (4 rows)
>
> postgres=# \c xpto
> You are now connected to database "xpto".
> xpto=# select UPPER('a');
>  upper
> -------
>  A
> (1 row)
>
> xpto=# select UPPER('á');
>  upper
> -------
>  Á
> (1 row)
>
>  2) Num banco criado como UTF8:
>
> postgres=# \l
>        List of databases
>   Name    |   Owner   | Encoding
> -----------+-----------+----------
>  xpto  | xxxadm | LATIN1
>  postgres  | postgres  | UTF8
>  template0 | postgres  | UTF8
>  template1 | postgres  | UTF8
> (4 rows)
>
> postgres=# \c xpto
> You are now connected to database "xpto".
> xpto=# select UPPER('a');
>  upper
> -------
>  A
> (1 row)
>
> xpto=# select UPPER('á');
>  upper
> -------
>  á
> (1 row)
>
>   O problema é que no segundo caso a aplicação dá erro porque usa UPPER
> e LOWER nas queries, que retornam com problemas. O mesmo problema ocorre
> se o banco "xpto" está em UTF8. A solução foi transferir o UPPER e LOWER
> para a aplicação e retirar da query.
>
>   Pergunta: o comportamento dessas funções não deveria seguir o
> encoding do banco ao qual se está conectado?
>
> --
> Benedito A. Cruz
> Centro de Referência em Informação Ambiental - CRIA
> email [email protected]
> fone 55 19 3288 0466
>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
> _______________________________________________
> 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