Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dian Carlos

Converter valor em reais (R$) para número inteiro e ordenar em AS

Recommended Posts

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..

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.