Senhores,
Estou voltando a trabalhar com o PostgreSQL, depois de mais de 5 anos sem
utilizar.
Neste momento estou "intrigado" com o comportamento do PostgreSQL,
relacionado a um campo "orgao", que tem valores "numéricos" alinhados à
direita.
Vejam a estrutura da tabela abaixo:
-bash-3.2$ psql -d pmgvprod
psql (9.0.4)
Type "help" for help.
pmgvprod=# \d orgaos
Table "pmgvschema.orgaos"
Column | Type | Modifiers
-------------+-----------------------+-----------
orgao | character varying(4) | not null
descricao | character varying(30) |
sigla | character varying(12) |
tipoorgao | character varying(2) |
nivel | character varying(1) |
responsavel | character varying(35) |
cargo | character varying(2) |
Indexes:
"pk_orgaos_orgao_01" PRIMARY KEY, btree (orgao)
Como disse, o campo "orgao" tem somente valores "numéricos" alinhados à
direita, por exemplo, o valor 650 está armazenado como " 650" (branco, seis,
cinco, zero):
"orgao","descricao","datacad"
" 100","Orgao 100",20110101
" 200","Orgao 200",20110102
" 300","Orgao 300",20110103
" 555","Orgao 555",20110104
" 650","Orgao 650",20110105
" 700","Orgao 700",20110106
"1000","Orgao 1000",20110107
"2000","Orgao 2000",20110108
"3000","Orgao 3000",20110109
"4000","Orgao 4000",20110110
O problema aqui é quando é feito um "SELECT" buscando todas as chaves
maiores que " 650" (branco, seis, cinco, zero):
SELECT ORGAO FROM ORGAOS WHERE ORGAO > " 650";
O PostgreSQL não está retornando os valores que deveria.
Não vejo problemas em trabalhar com este campo como "numérico", mas fiquei
intrigado o "porquê" do PostgreSQL ter este comportamento diferente dos
outros bancos de dados testados.
O banco está com o Encoding, Collation e Ctype conforme abaixo:
postgres=# \q
-bash-3.2$ psql -l
List of databases
Name | Owner | Encoding | Collation | Ctype |
Acces
s privileges
-----------+----------+----------+------------------+------------------+--------
---------------
pmgvprod | postgres | LATIN1 | en_US.ISO-8859-1 | en_US.ISO-8859-1 |
postgres | postgres | LATIN1 | en_US.ISO-8859-1 | en_US.ISO-8859-1 |
template0 | postgres | LATIN1 | en_US.ISO-8859-1 | en_US.ISO-8859-1 |
=c/postgres +
| | | | |
postgres=CTc/postgres
template1 | postgres | LATIN1 | en_US.ISO-8859-1 | en_US.ISO-8859-1 |
=c/postgres +
| | | | |
postgres=CTc/postgres
(4 rows)
Alguém já passou por isso?
Alexandre Macedo
e-mail/MSN: [email protected]
This message is for the exclusive use of addressee and may contain
privileged and confidential. If you are not the addressee you should not
distribute, copy or file this message. In this case, please destroy the
message.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral