sql >> Base de Datos >  >> RDS >> MariaDB

PISO de MariaDB () frente a TRUNCATE ()

MariaDB tiene un FLOOR() función y un TRUNCATE() función que puede devolver los mismos resultados o resultados diferentes, dependiendo del valor exacto de sus argumentos.

A continuación se muestra un resumen rápido de la diferencia entre FLOOR() y TRUNCATE() en MariaDB.

La diferencia

Aquí está la diferencia entre cada función en pocas palabras:

  • FLOOR() devuelve el valor entero más grande no mayor que su argumento.
  • TRUNCATE() trunca su argumento a un número específico de lugares decimales.

Sintaxis

Primero, aquí están las sintaxis de cada función.

FLOOR()

La sintaxis de FLOOR() va así:

FLOOR(X)

Devuelve el valor entero más grande no mayor que X .

TRUNCATE()

La sintaxis para TRUNCATE() va así:

TRUNCATE(X,D)

TRUNCATE() devuelve el número X , truncado a D lugares decimales.

Ejemplo

Aquí hay una comparación para demostrar la diferencia entre FLOOR() y TRUNCATE() :

SELECT 
    FLOOR(-3.6789),
    TRUNCATE(-3.6789, 0);

Resultado:

+----------------+----------------------+
| FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) |
+----------------+----------------------+
|             -4 |                   -3 |
+----------------+----------------------+

En este caso, el número es un valor negativo y el resultado de cada función es diferente.

  • FLOOR() devolvió el entero más grande (-4 ) valor no mayor que su argumento.
  • El TRUNCATE() por otro lado, simplemente truncó el número en el lugar decimal especificado.

Mismo resultado

Ambas funciones a veces pueden devolver el mismo resultado. Todo depende del valor de los argumentos que se pasan.

Si cambiamos los números a valores positivos, ambas funciones devuelven el mismo resultado:

SELECT 
    FLOOR(3.6789),
    TRUNCATE(3.6789, 0);

Resultado:

+---------------+---------------------+
| FLOOR(3.6789) | TRUNCATE(3.6789, 0) |
+---------------+---------------------+
|             3 |                   3 |
+---------------+---------------------+

El segundo argumento

Otra diferencia obvia entre las dos funciones es que TRUNCATE() acepta/requiere un segundo argumento. Esto puede resultar en un resultado que contiene una parte fraccionaria.

FLOOR() sin embargo, solo devuelve un número entero, por lo que nunca se devuelve una parte fraccionaria.

Ejemplo

SELECT 
    FLOOR(3.6789),
    TRUNCATE(3.6789, 2);

Resultado:

+---------------+---------------------+
| FLOOR(3.6789) | TRUNCATE(3.6789, 2) |
+---------------+---------------------+
|             3 |                3.67 |
+---------------+---------------------+

El ROUND() Función

Ambas funciones son diferentes a ROUND() función, que redondea su argumento a un número específico de lugares decimales.