Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
E ai galera! É o seguinte. Tenho a seguinte consulta SQL: $sql = 'SELECT * FROM uimoveis WHERE ((uImovelTipo = "1")) AND (uImovelLock = 1) ORDER BY uImovelPreco ASC'. Mas o campo 'uImovelPreco' está com os valores todos em texto, e o cliente quer que seja ordenado por valor, mas em texto comum eu não estou conseguindo.. Como eu faço para converter um valor em reais (EX: o banco está com os valores no formato R$ 370.000,00) para inteiro e assim conseguir ordenar em ordem ascendente? Já vi uma função que converte o valor do campo, mas não tive sucesso. Desde já agradeço a ajuda de todos..
Já consegui resolver Motta.
O meu SELECT teve que ficar da seguinte maneira:
$sql = 'SELECT
`uImovelCode`,
`uImovelRef`,
`uImovelTitulo`,
`uImovelTipo`,
`uImovelStatus`,
`uImovelCategoria`,
CONVERT(
SUBSTRING_INDEX(
REPLACE(REPLACE(REPLACE(`uImovelPreco`, "R$ ", ""), ".", ""), ",", "."),
"-", -1),
UNSIGNED INTEGER) AS `uImovelPreco`,
`uImovelBairro`,
`uImovelCidade`,
`uImovelEstado`,
`uImovelTexto`,
`uImovelImg2` FROM `uimoveis` WHERE ' . $SQL . ' AND (`uImovelLock` = 1) ORDER BY `uImovelPreco` ASC LIMIT ' . $inicio . ',' . $_BS['PorPagina'];
E na exibição tive que deixar a string assim:
>
$uImovelPreco = 'R$ ' . number_format($uImovel['uImovelPreco'], 2, ',', '.');
Demorei, pesquisei kilos na documentação do MySQL, até conseguir..
Mas obrigado ai pela resposta..
Pense em converter este campo.
O correto é guardar o valor como numérico e formatar ao exibir na camada de aplicação.
A melhor solução é corrigir a tabela.
Existem functions como REPLACE TRIM CAST que podem ser úteis para converter valores em string para formato numérico.
Com isto o ORDER BY funciona.