Jump to content
Fórum Script Brasil
  • 0

Consulta em tabela com chave inteira só retorna dados usando cast


RonanVargas
 Share

Question

Olá pessoal,

Estou usando o postgres vs. 9.1.14 e o pgAdmin vs. 1.20 para consultar. Tanto na aplicação que utiliza o BD quanto no pgAdmin está ocorrendo o problema abaixo:

Dado que a tabela CLIENTES contém uma chave inteira (COD_CLIENTE):

select * from CLIENTES where COD_CLIENTE = <COD_CLIENTE>;

   Retorna ZERO linhas;

select * from CLIENTES where (cast COD_CLIENTE as text) = '<COD_CLIENTE>';

   Retorna UMA linha;

Isso ocorreu com uma faixa muito pequena de registros na tabela (apenas 2 detectados entre mais de 250 mil linhas) mas receio que o problema possa ser maior.

Inclusive já forcei um update na tabela para esse cliente com o mesmo COD_CLIENTE, sem sucesso.

Suspeito que seja algum problema de codificação de caracteres, já que é um sistema de cobrança e o principal modo de inserção nas tabelas é via importação de arquivos texto.

Alguém já se deparou com esse problema e pode dar uma luz?

Obrigado desde já.

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

select * from CLIENTES where COD_CLIENTE = <COD_CLIENTE>;

Você pode especificar um search_condition usando comparação ou operadores lógicos. como >, <, =, Like, Not,  etc.

ou voce coloca diretamente o valor do Cod_Cliente na select

select * from CLIENTES where COD_CLIENTE = 34;

ou usa passagem de parametro na select

select * from CLIENTES where COD_CLIENTE = :COD;

 

 

Tutoriais:

http://www.tutorialspoint.com/postgresql/postgresql_where_clause.htm

https://www.google.com.br/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=postgresql+select+

abraço

Link to comment
Share on other sites

  • 0

Olá Jhonas,

Estou explicitando o valor do parâmetro. No caso, as queries que rodo diretamente no pgAdmin são:

select * from CLIENTES where (cast COD_CLIENTE as text) = '1109141';

select * from CLIENTES where COD_CLIENTE = 1109141;

Segue em anexo dois prints da tela do pgAdmin com o resultado.

print_1.png

print_2.png

Edited by RonanVargas
Excluir anexos desnecessários.
Link to comment
Share on other sites

  • 0

Jhonas,

O tipo de COD_CLIENTE é integer. Para as duas queries que enviaste, deu erro de SQL (Conforme prints em anexo).

O detalhe é que esse erro foi detectado em meia dúzia ou menos de registros na tabela CLIENTES.

Esse é o ponto. Estou precisando fazer CAST de integer para string em COD_CLIENTE, pois a busca simples por COD_CLIENTE não está retornando.

Esse erro ocorre não apenas no pgAdmin, mas também na lib do PGSQL que usamos na nossa aplicação.

print_3.png

print_4.png

Link to comment
Share on other sites

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.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...