Ir para conteúdo
Fórum Script Brasil
  • 0

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


amacedo

Pergunta

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 para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...