Resumo : Este tutorial mostra como usar a FORMAT()
função MySQL para formatar números decimais em vários locais.
Introdução à função MySQL FORMAT()
Às vezes, você usa uma expressão ou uma função agregada como AVG para calcular valores nos bancos de dados, como giro de estoque, preço líquido médio de produtos e valor médio da fatura.
O resultado da expressão é um decimal com muitas casas decimais. Para formatar esses números, você usa a FORMAT
função com a seguinte sintaxe:
FORMAT(N,D,locale);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A FORMAT
função formata o número N para formato como ‘#,###,###.##’, arredondado para D casas decimais. Ele retorna um valor como uma string.
A FORMAT
função aceita três argumentos:
- O
N
é o número que você deseja formatar. - O
D
é o número de casas decimais que você deseja arredondar. - A localidade é um argumento opcional que determina mil separadores e agrupamento entre separadores. Se você omitir o operador locale, o MySQL usará
en_US
por padrão. O link a seguir fornece todos os nomes de localidades suportados pelo MySQL .
Exemplos de funções MySQL FORMAT
Veja os exemplos a seguir de uso da FORMAT
função.
SELECT FORMAT(12500.2015, 2);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A instrução a seguir utiliza a FORMAT
função com o segundo argumento zero, portanto, o resultado não possui casas decimais.
SELECT FORMAT(12500.2015, 0);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A instrução a seguir usa a de_DE
localidade em vez da en_US
localidade:
SELECT FORMAT(12500.2015, 2,'de_DE');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Como você pode ver no resultado, a de_DE
localidade usa ponto (.) para agrupar mil e vírgula (,) para marca decimal.
Vamos dar uma olhada na products
tabela no banco de dados de exemplo :
Para calcular o valor do estoque de cada produto, você multiplica a quantidade em estoque e o preço de compra da seguinte forma:
SELECT
productname, quantityInStock * buyPrice stock_value
FROM
products;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O resultado não parece bom porque há muitas casas decimais.
Para melhorar, você pode combinar duas funções: FORMAT
e CONCAT
. A FORMAT
função formata o valor do estoque arredondado para 2 casas decimais. A função CONCAT adiciona o símbolo USD ($) no início da sequência de valor da ação:
SELECT
productname,
CONCAT('$',
FORMAT(quantityInStock * buyPrice, 2)) stock_value
FROM
products;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que a FORMAT
função retorna um valor de string. Isso significa que se você quiser classificar os resultados da FORMAT
função usando a cláusula ORDER BY , o MySQL classificará os resultados usando base em string e não em número.
Por exemplo, a instrução a seguir classifica os valores das ações em ordem alfabética.
SELECT
productname,
CONCAT('$',
FORMAT(quantityInStock * buyPrice, 2)) stock_value
FROM
products
ORDER BY stock_value;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para classificar numericamente os valores das ações, você coloca a expressão na ORDER BY
cláusula da seguinte forma:
SELECT
productname,
CONCAT('$',
FORMAT(quantityInStock * buyPrice, 2)) stock_value
FROM
products
ORDER BY quantityInStock * buyPrice;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use a função MySQL
FORMAT()
para formatar um número em vários nomes de localidade.