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

Cómo funciona TRUNCATE() en MariaDB

En MariaDB, TRUNCATE() es una función numérica incorporada que devuelve un número dado, truncado a un número dado de lugares decimales.

Sintaxis

La sintaxis es así:

TRUNCATE(X,D)

Donde X es el valor a truncar, y D especifica a cuántos lugares decimales se debe truncar.

Ejemplo

He aquí un ejemplo:

SELECT TRUNCATE(1.25817, 2);

Resultado:

+----------------------+
| TRUNCATE(1.25817, 2) |
+----------------------+
|                 1.25 |
+----------------------+

Aquí hay algunos más:

SELECT 
    TRUNCATE(1.25817, 1),
    TRUNCATE(1.25817, 2),
    TRUNCATE(1.25817, 3),
    TRUNCATE(1.25817, 4);

Resultado (usando salida vertical):

TRUNCATE(1.25817, 1): 1.2
TRUNCATE(1.25817, 2): 1.25
TRUNCATE(1.25817, 3): 1.258
TRUNCATE(1.25817, 4): 1.2581

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 TRUNCATE(5824.17, -2);

Resultado:

+-----------------------+
| TRUNCATE(5824.17, -2) |
+-----------------------+
|                  5800 |
+-----------------------+

Comparado con ROUND()

El TRUNCATE() la función es diferente a ROUND() función. El ROUND() La función redondea el número hacia arriba en algunos casos y hacia abajo en otros. El TRUNCATE() La función, por otro lado, simplemente trunca el número sin redondearlo.

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

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

Resultado:

+---------------------+------------------+
| TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) |
+---------------------+------------------+
|                3.67 |             3.68 |
+---------------------+------------------+

También es diferente al FLOOR() función, que devuelve el valor entero más grande no mayor que su argumento. FLOOR() no acepta un segundo argumento como ROUND() y TRUNCATE() do (solo devuelve un número entero de todos modos).

Argumentos no numéricos

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

SELECT TRUNCATE('Ten', 'Two');

Resultado:

+------------------------+
| TRUNCATE('Ten', 'Two') |
+------------------------+
|                      0 |
+------------------------+
1 row in set, 3 warnings (0.000 sec)

Revisemos la advertencia:

SHOW WARNINGS;

Resultado:

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

Recuento de argumentos no válidos

Llamando a TRUNCATE() con el número incorrecto de argumentos, o sin un argumento da como resultado un error:

SELECT TRUNCATE();

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

Y:

SELECT TRUNCATE(1, 2, 3);

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 ' 3)' at line 1