MariaDB tem um
FLOOR()
função e um TRUNCATE()
função que pode retornar os mesmos resultados ou resultados diferentes, dependendo do valor exato de seus argumentos. Abaixo está um resumo rápido sobre a diferença entre
FLOOR()
e TRUNCATE()
em MariaDB. A diferença
Aqui está a diferença entre cada função em poucas palavras:
FLOOR()
retorna o maior valor inteiro não maior que seu argumento.TRUNCATE()
trunca seu argumento para um número especificado de casas decimais.
Sintaxe
Primeiro, aqui estão as sintaxes de cada função.
FLOOR()
A sintaxe para
FLOOR()
fica assim:FLOOR(X)
Retorna o maior valor inteiro não maior que
X
. TRUNCATE()
A sintaxe para
TRUNCATE()
fica assim:TRUNCATE(X,D)
TRUNCATE()
retorna o número X
, truncado para D
casas decimais. Exemplo
Aqui está uma comparação para demonstrar a diferença entre
FLOOR()
e TRUNCATE()
:SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Resultado:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
Nesse caso, o número é um valor negativo e o resultado de cada função é diferente.
FLOOR()
retornou o maior inteiro (-4
) valor não maior que seu argumento.- O
TRUNCATE()
por outro lado, simplesmente truncou o número na casa decimal especificada.
Mesmo resultado
Às vezes, ambas as funções podem retornar o mesmo resultado. Tudo depende do valor dos argumentos que estão sendo passados.
Se alterarmos os números para valores positivos, ambas as funções retornarão o mesmo resultado:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Resultado:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
O segundo argumento
Outra diferença óbvia entre as duas funções é que
TRUNCATE()
aceita/requer um segundo argumento. Isso pode resultar em um resultado que contém uma parte fracionária. FLOOR()
no entanto, apenas retorna um inteiro, portanto, nenhuma parte fracionária é retornada. Exemplo
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Resultado:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
O ROUND()
Função
Ambas as funções são diferentes do
ROUND()
função, que arredonda seu argumento para um número especificado de casas decimais.