MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

MariaDB FLOOR() vs TRUNCATE()


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.