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

Cómo funciona ROUND() en MariaDB

En MariaDB, ROUND() es una función numérica incorporada que redondea su argumento a un número dado de lugares decimales.

Sintaxis

La función se puede utilizar de las dos formas siguientes:

ROUND(X)
ROUND(X,D)

Donde X es el valor a redondear, y D es un argumento opcional que especifica el número de lugares decimales para redondearlo.

Ejemplo

He aquí un ejemplo:

SELECT ROUND(7.5);

Resultado:

+------------+
| ROUND(7.5) |
+------------+
|          8 |
+------------+

Pasar un valor negativo produce el siguiente resultado:

SELECT ROUND(-7.5);

Resultado:

+-------------+
| ROUND(-7.5) |
+-------------+
|          -8 |
+-------------+

Especifique lugares decimales

Por defecto, el ROUND() La función redondea el valor a cero decimales. Podemos especificar el número de lugares decimales para redondear el valor pasando un segundo argumento.

Ejemplo:

SELECT ROUND(7.5164, 2);

Resultado:

+------------------+
| ROUND(7.5164, 2) |
+------------------+
|             7.52 |
+------------------+

Posiciones decimales negativas

El segundo argumento puede ser un valor negativo si es necesario. Pasar un valor negativo genera dígitos a la izquierda del lugar decimal para convertirse en cero.

Ejemplo:

SELECT ROUND(3724.51, -2);

Resultado:

+--------------------+
| ROUND(3724.51, -2) |
+--------------------+
|               3700 |
+--------------------+

Comparado con FLOOR()

El ROUND() la función es diferente a FLOOR() función. El ROUND() La función redondea el número hacia arriba en algunos casos y hacia abajo en otros. El FLOOR() La función, por otro lado, siempre devuelve el valor entero más grande que no sea mayor que su argumento.

Aquí hay una comparación para demostrar esta diferencia:

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789);

Resultado:

+---------------+---------------+
| FLOOR(3.6789) | ROUND(3.6789) |
+---------------+---------------+
|             3 |             4 |
+---------------+---------------+

Además, FLOOR() no acepta un segundo argumento como ROUND() lo hace.

ROUND() también es diferente al TRUNCATE() función, que simplemente trunca el número a un lugar decimal dado, sin ningún redondeo.

Argumentos no numéricos

Esto es lo que sucede cuando proporcionamos un argumento no numérico:

SELECT ROUND('Ten');

Resultado:

+--------------+
| ROUND('Ten') |
+--------------+
|            0 |
+--------------+
1 row in set, 1 warning (0.028 sec)

Revisemos la advertencia:

SHOW WARNINGS;

Resultado:

+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' |
+---------+------+-----------------------------------------+

Argumentos faltantes

Llamando a ROUND() sin un argumento da como resultado un error:

SELECT ROUND();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'ROUND'