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

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


RonanVargas

Pergunta

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

7 respostass a esta questão

Posts Recomendados

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

Editado por RonanVargas
Excluir anexos desnecessários.
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

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,5k
×
×
  • Criar Novo...