Skyo 1 Denunciar post Postado Janeiro 4, 2009 Bom to aqui com uma tabela MySQL que possui um campo VARCHAR ( 16 )... Preciso fazer um select nesse campo tratando ele como DECIMAL pois os dados salvos nele são do tipo (,2 ou 10,8) por exemplo.. Então o SELECT teria que ordenar por esse campo tratando ele como DECIMAL. Tentei o CAST e o CONVERT do MySQL e não funciona isso.. $captura = mysql_query("SELECT campo FROM tabela ORDER BY CONVERT(campo, DECIMAL) DESC"); $captura = mysql_query("SELECT campo FROM tabela ORDER BY CAST(campo AS DECIMAL) DESC"); Alguma idéia? Usando O CAST eu consigo o seguinte, números tipo 1,20 ficam primeiro que 1,54 por exemplo, mas um campo com o valor 0,6 fica depois de 1,20 e isso ta certo, parece que as virgulas são ignoradas... Então consigo uma ordem parecida com: 1,20 1,54 0,6 Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Janeiro 4, 2009 Tópico movido Origem: Programação » PHP Destino: Gerenciamento de Banco de Dados » MySQL E a Lucy owna!!!! Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Janeiro 4, 2009 Inseri a função REPLACE dentro da CAST que tava depois do ORDER BY. $captura = mysql_query("SELECT campo FROM tabela ORDER BY CAST(REPLACE(campo, ',', '') AS DECIMAL) DESC"); Mas pelo visto não adianta mto.. Um campo ,60 por exemplo tirando a virgula fode.. Tentei dar o REPLACE com um '.' (ponto) mas tb não resolver (queria ver se o MySQL interpretava o DECIMAL corretamente... Alguma sugestão? Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Janeiro 4, 2009 meu avô costumava dizer q tudo q começa errado soh pode terminar errado... se o campo guarda valores decimais ele deve ser decimal.... e ',60' simplismente nao eh um valor aceitavel. porem.......................... SELECT campo FROM tabela ORDER BY SUBSTRING_INDEX(campo, ',' , 1)DESC , SUBSTRING_INDEX(campo, ',' , -1)DESC Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Janeiro 5, 2009 Opa, não foi uma opção ser VARCHAR, ele é alterado por um sistema em outra linguagem e só funcionou com o campo em VARCHAR.. Mas.. Esse seu SELECT não funcionou mto bem, números maiores que 10,xx não são exibidos (ou melhor, ficam pra trás)... Obs: estou usando LIMIT 5 no final da query, não sei se isso vai alterar em nada esse seu SELECT.. Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Janeiro 5, 2009 SELECT campo FROM tabela ORDER BY (SUBSTRING_INDEX(campo, ',' , 1) +0) DESC , (SUBSTRING_INDEX(campo, ',' , -1) +0) DESC Compartilhar este post Link para o post Compartilhar em outros sites