Blog da Softblue


Este artigo foi criado por Andre Milani.
Conheça o currículo completo do instrutor clicando aqui.

Arredondando no MySQL

Publicado em 20/02/2012 às 23:58:57 horas.

Compartilhe:    

Uma dúvida bastante comum entre as pessoas que estão iniciando os seus estudos em bancos de dados e começando a manipular na prática o SQL é a respeito da formatação de números decimais. Esta dúvida está relacionada também, na maioria dos casos, com a utilização dos tipos de dados double e float, mas pode ocorrer também em outras circunstâncias.

Dízima periódica

Algumas contas matemáticas podem gerar dízimas periódicas, como por exemplo a operação de divisão do número 5 pelo número 3:

SELECT 5/3;
# Resultado: 1.6667

Operações de multiplicação também podem gerar números decimais ou resultados como por exemplo: ao multiplicar 1000 por 1.5, o resultado é de 1500, mas em algumas situações o MySQL pode apresentar o número em diferentes versões: 1500.0000, 1500.00001, etc. Isto ocorre pois o servidor de banco de dados em questão, ao realizar estas contas, não leva em consideração quantas casas decimais havia no número original utilizado na operação para formatar o resultado final, sendo necessário, neste caso, formatar o número manualmente, ou adequar a coluna da tabela que receberá este valor para suportar no máximo o número de casas decimais desejado pelo programador.

Para tratar adequadamente a formatação destes valores, é possível utilizar a função ROUND disponível no MySQL. Esta função recebe dois parâmetros: o primeiro deles é o número a ser formatado, e o segundo é o número de casas decimais que o usuário deseja que o valor apresente. Na omissão do segundo parâmetro, o comando arredonda o valor para um inteiro (sem casas decimais).

Alguns exemplos de utilização da função ROUND:

SELECT ROUND(1.6667);
# Resultado: 2
# Arredonda para não utilizar casas decimais

SELECT ROUND(1.6667, 1);
# Resultado: 1.7
# Arredonda para uma casa decimal

SELECT ROUND(1.6667, 2);
# Resultado: 1.67
# Arredonda para duas casas decimais

Observe que ao arredondar um valor, o comando ROUND não apenas exibe o número de casas decimais informado, mas também arredonda a última casa decimal em questão para cima ou para baixo dependendo do valor decimal da próxima casa. Por exemplo:

SELECT ROUND(1.6667, 3);
# Resultado: 1.667
# Casas decimais 3 e 4: 67 está mais próximo de 70 do que de 60

SELECT ROUND(1.6664, 3);
# Resultado: 1.666
# Casas decimais 3 e 4: 64 está mais próximo de 60 do que de 70

Quando usar: na instrução UPDATE ou SELECT?

Quando devemos utilizar o comando ROUND? Podemos utilizá-lo em dois momentos distintos. O primeiro deles seria na instrução UPDATE que irá atualizar seus dados, como por exemplo:

UPDATE TABELA SET CAMPO = ROUND(...);

Desta forma já seria armazenado na tabela em questão o valor resultante da operação devidamente formatado. A outra forma seria não armazenar o valor formatado, e sim formatá-lo no momento que o mesmo fosse capturado pela instrução SELECT:

SELECT ROUND(CAMPO, 2) FROM TABELA;

Não existe uma forma certa ou errada de utilizar este comando, pois isto vai depender das especificações do seu projeto. Se for interessante para o seu sistema armazenar o valor sem o arredondamento (o arredondamento pode influenciar o resultado em operações futuras), o recomendado é armazená-lo sem arredondamento. Caso contrário, você poderá utilizar o comando de formatação logo na instrução UPDATE sem maiores preocupações,

Mailing List

Cadastre o seu e-mail para receber notícias e informações sobre novos cursos, atualizações e outras novidades da Softblue!

Diferenciais

Liberdade total
Estude quando e como quiser. Disponibilidade do conteúdo 24h por dia, 7 dias por semana.
Matrícula não expira
Pagamento único, sem mensalidades, e acesso vitalício a todo o conteúdo, mesmo após a conclusão do curso.
Cursos sempre atualizados
Acesso às atualizações dos cursos de forma automática.
Tire suas dúvidas
Suporte eficiente para esclarecer suas dúvidas no decorrer do curso.
Padrão de qualidade
Atendimento diferenciado e material de alta qualidade, feito por quem entende do assunto.

Certificado

Insira o código do certificado que deseja consultar:

Pagamento





Conheça todas as nossas formas de pagamento.


             Cursos  |   Perguntas  |   Sobre nós  |   Sorteios  |   Blog  |   Política de Privacidade  |   Contato Desde 2003.    
Todos os direitos reservados ®    
CNPJ 06.860.085/0001-64