No MariaDB,
FORMAT()
é uma função de string interna que formata e retorna o número fornecido como uma string. Requer dois argumentos e aceita um terceiro argumento opcional. O primeiro é o número que você deseja formatar, o segundo é a posição decimal e o terceiro (opcional) é a localidade.
Sintaxe
A sintaxe fica assim:
FORMAT(num, decimal_position[, locale])
Onde
num
é o número, decimal_position
é o número de casas decimais para arredondar o número e locale
é uma localidade opcional a ser usada para formatar o número (diferentes localidades usam convenções diferentes para formatar números). Exemplo
Segue um exemplo básico:
SELECT FORMAT(1234.5678, 2);
Resultado:
+----------------------+ | FORMAT(1234.5678, 2) | +----------------------+ | 1,234.57 | +----------------------+
Aqui,
FORMAT()
adicionou uma vírgula para um separador de milhares. Ele também arredondou o número para duas casas decimais (porque eu especifiquei 2 como o segundo argumento). Remover parte fracionária
Para remover a parte fracionária (e seu ponto decimal associado), use
0
(zero) como o segundo argumento:SELECT FORMAT(1234.5678, 0);
Resultado:
+----------------------+ | FORMAT(1234.5678, 0) | +----------------------+ | 1,235 | +----------------------+
Adicionando casas decimais
Se o segundo argumento for um número maior que o número de casas decimais no primeiro argumento, zeros serão adicionados ao resultado, para que reflita o número desejado de casas decimais:
SELECT
FORMAT(1234, 2),
FORMAT(1234.56, 4),
FORMAT(1234.56, 8);
Resultado:
+-----------------+--------------------+--------------------+ | FORMAT(1234, 2) | FORMAT(1234.56, 4) | FORMAT(1234.56, 8) | +-----------------+--------------------+--------------------+ | 1,234.00 | 1,234.5600 | 1,234.56000000 | +-----------------+--------------------+--------------------+
Especifique uma localidade
Opcionalmente, você pode passar um terceiro argumento para especificar a localidade a ser usada para a formatação.
Exemplo:
SELECT
FORMAT(1234567.8912, 2, 'da_DK') AS "da_DK",
FORMAT(1234567.8912, 2, 'rm_CH') AS "rm_CH",
FORMAT(1234567.8912, 2, 'es_BO') AS "es_BO",
FORMAT(1234567.8912, 2, 'ar_SA') AS "ar_SA";
Resultado:
+--------------+--------------+------------+------------+ | da_DK | rm_CH | es_BO | ar_SA | +--------------+--------------+------------+------------+ | 1.234.567,89 | 1'234'567,89 | 1234567,89 | 1234567.89 | +--------------+--------------+------------+------------+
Argumentos não numéricos
FORMAT()
apenas formata números. Fornecer uma string, por exemplo, resulta em 0
sendo devolvido. No entanto, ainda é formatado para a casa decimal especificada:SELECT
FORMAT("Twenty five", 0),
FORMAT("Twenty five", 2),
FORMAT("Twenty five", 4);
Resultado:
+--------------------------+--------------------------+--------------------------+ | FORMAT("Twenty five", 0) | FORMAT("Twenty five", 2) | FORMAT("Twenty five", 4) | +--------------------------+--------------------------+--------------------------+ | 0 | 0.00 | 0.0000 | +--------------------------+--------------------------+--------------------------+
Argumentos nulos
Fornecendo
null
pois qualquer um dos dois primeiros argumentos resulta em null
:SELECT
FORMAT(null, 2),
FORMAT(25, null);
Resultado:
+-----------------+------------------+ | FORMAT(null, 2) | FORMAT(25, null) | +-----------------+------------------+ | NULL | NULL | +-----------------+------------------+
Mas passando
null
como o terceiro argumento não afeta o resultado:SELECT FORMAT(25, 2, null);
Resultado:
+---------------------+ | FORMAT(25, 2, null) | +---------------------+ | 25.00 | +---------------------+
Fornecendo apenas um argumento
Fornecer um único argumento resulta em um erro:
SELECT FORMAT(1234.56);
Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
Sem argumentos
Chamando
FORMAT()
sem passar nenhum argumento resulta em um erro:SELECT FORMAT();
Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1