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