Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
olá!
galera...
tenho uma consulta e preciso ordenar ela. até aí tudo certo, o problema está em um campo da minha ordenação em que os dados estão +/- assim.
2.10.1
2.11.2
2.2.1
só que eu precisaria ordenar isso por
2.2.1
2.10.1
2.11.2
como posso fazer isso?
este campo é varchar.
Correto.
O que é mais inteligente de se fazer. Ou...
Eu faria algo mágico. Retornaria toda a busca para o lado server-side e lá tratava esses dados e ordenava, o que pode ser um problema se você tem 3000 registros ^^
Acredito que a forma mais viável de se fazer seja adicionando um campo para ordenação, como o amigo acima disse.
Uma possível solução me ocorreu agora.
Pense
2.2.1
2.10.1
2.11.2
Como números numa base 100 , 100 mesmo.
Assim :
2.2.1 = 2 x 1002 + 02 x 1001 + 1 x 1000 = 20200
2.10.1 = 2 x 1002 + 10 x 1001 + 1 x 1000 = 21000
2.11.2 = 2 x 1002 + 11 x 1001 + 1 x 1000 = 21100
Uma FUNCTION recebe a string, "desmonta" a dita cuja e calcula o retorno.
O order by é com a FUNCTION.
Tive um problema assim com Oracle, não consegui resolver via SQL, criei uma coluna chamada ORDEM (numérica) e ordenei por ela.