AVISO LEGAL: Se isso já foi postado, sinto muito, mas como não temos um recurso de ‘pesquisa’ para mensagens, prefiro fazer uma nova postagem do que manter isso longe de vocês, pessoal 🙂
Então, eu estava mexendo em algumas tabelas neste fim de semana e precisava classificar uma consulta usando a seleção natural.
Vamos supor que temos a seguinte coleção de dados
Então, vamos ao MySQL e executamos a seguinte consulta
SELECT * FROM testdata ORDER BY name</code>
O resultado são os dados classificados como string:
Para evitar esse problema, podemos pedir ao MySQL para classificar os dados por LENGTH primeiro e eles por nome, assim:
SELECT * FROM testdata ORDER BY LENGHT(name), name </code>
Ótimo! Agora funciona. O céu está azul novamente.
Vamos inverter a ordem e … Merda. Se você precisar inverter a ordem, e você executouSELECT * FROM testdata ORDER BY LENGHT(name), name DESC</code> you'd be surprised with the following result
Mas, mais uma vez, isso é fácil de resolver; Apenas certifique-se de passar o argumento DESC para ambos os filtros ORDER BY, como este
SELECT * FROM testdata ORDER BY LENGHT(name) DESC, name DESC</code>
E aí está.