Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

PedBolo

[Resolvido] Ordenar campo

Recommended Posts

Pessoal, o campo na tabela é texto (banco MYSQL), mas são cadastrados numeros neste campo (que na verdade são valores), quando quero organizar por este campo, ex: 'o mais barato primeiro', ele só organiza pelo primeiro caracter, e não pelo valor total, ex:

 

ORDER BY campo ASC

 

resulta em:

 

R$ 150,00

R$ 180,00

R$ 2000,00

R$ 200,00

R$ 250,00

 

No banco eles são cadastrados sem pontos ou virgulas, é apenas numeros mesmo...

 

 

tentei ORDER BY CInt(campo) ASC, mas não deu... o driver q uso na conexão eh MySQL, sem mais detalhes dele, como versão e etc..

 

não tem como mudar o tipo de campo, preciso de outra alternativa :mellow:

 

obrigado galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se vais armazenar números no campo, então utilize um campo tipo numérico, normalmente o double resolve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está sendo punido justamento pelo seu erro no uso adequado do tipo de dados

 

Como foi falado use o tipo correto e será muito mais simples codificar seu sistema depois

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, antes de mais nada peço desculpa pelos comentarios dos outros membros deste fórum.

 

Só quem já passou por problemas como o seu sabe que nem sempre é possível termos o melhor banco por N motivos, talvez por estar dando continuidade a um projeto inicializado por outro, ou por tempo, ou por alteração de projeto, ou por simplesmente na época de inicio não termos "conhecimento" suficiente.

 

+ em fim, o seu problema pode sim ser concertado é só você converter o campo na hora de ordena-lo e assim ordenará por valor e não por "texto".

 

Esta complicado procurar e efetuar testes aqui para lhe passar a informação correta mas acredito que o Cast(CAMPO as SIGNED) vai resolver o seu problema.

 

Tente ai

 

select * from tabela where ....... order by Casc(seucampo as SIGNED) asc (ou desc)

 

 

não existe outra maneira de se fazer isso?

alterar a tabela agora seria um tanto qnto inviável

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Felipe, agradeço pela sua preocupação na qualidade de resposta, também gosto mto de ajudar qndo posso.

 

Não conhecia essa função CAST, era tudo o que eu precisava, muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só para deixar mais claro também. Muito provavelmente haverá uma redução na performance de seu sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.