Jump to content
Fórum Script Brasil
  • 0

Chave varchar (numérico alinhados à direita) não retorna registros esp


amacedo

Question

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

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...