Pessoal, estou com o seguinte problema, eu tenho uma tabela no banco (MySQL) com uma coluna de código, onde por exemplo, existem os dados:
CODIGO
12-32-2
111-432-2
23-434-5
Quando eu faço um select e ordeno esses dados, SELECT * FROM nomeDaTabela order by CODIGO ele não ordena corretamente, ele pega somente os numeros antes da ’ - '. Esse campo é um varchar. Alguém pode me dar uma ajuda para ordenar por codigo más considerado ele inteiro e não somente até o traço?
Sim, ele está ordenando corretamente.
Já viu a tabela ASCII?
Nela está a explicação para tal comportamento:
0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9
Porém,
< 0
Ou seja, quando o MySQL engine acha dois valores
100-1 e 1000 ele vai colocar o 100-1 antes do 1000.
Qual o problema?
Agora, se ele encontra
100-1 e 100-0 e coloca o 100-1 antes, aí sim o comportamento está errado.
Sim, ele está ordenando corretamente.
Já viu a tabela ASCII?
Nela está a explicação para tal comportamento:
0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9
Porém,
< 0
Ou seja, quando o MySQL engine acha dois valores
100-1 e 1000 ele vai colocar o 100-1 antes do 1000.
Qual o problema?
Agora, se ele encontra
100-1 e 100-0 e coloca o 100-1 antes, aí sim o comportamento está errado.
Sim, ele está ordenando corretamente.
Já viu a tabela ASCII?
Nela está a explicação para tal comportamento:
0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9
Porém,
< 0
Ou seja, quando o MySQL engine acha dois valores
100-1 e 1000 ele vai colocar o 100-1 antes do 1000.
Qual o problema?
Agora, se ele encontra
100-1 e 100-0 e coloca o 100-1 antes, aí sim o comportamento está errado.