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