Curso de MySQL
Consultas, lista de correo 'C++ Con Clase' 'MySQL Con Clase' página de entrada Tabla de contenido Contactar con Webmaster
Curso Sentencias Funciones API C

SQL

Funciones

Matemáticas ABS ACOS ASIN ATAN ATAN2 CEIL CEILING COS COT CRC32 DEGREES DIV EXP FLOOR GREATEST LEAST LN LOG LOG10 LOG2 MOD PI POW POWER RADIANS RAND ROUND SIGN SIN SQRT TAN Tiempo Cadena Conversión Control de Flujo Encriptado Información Genéricas GROUP BY

TRUNCATE

TRUNCATE(X,D)

Devuelve el número X, truncado a D decimales. Si D es 0, el resultado no trendrá punto decimal o parte fracionaria:

mysql> SELECT TRUNCATE(1.223,1);
+-------------------+
| TRUNCATE(1.223,1) |
+-------------------+
|               1.2 |
+-------------------+
1 row in set (0.00 sec)

mysql> SELECT TRUNCATE(1.999,1);
+-------------------+
| TRUNCATE(1.999,1) |
+-------------------+
|               1.9 |
+-------------------+
1 row in set (0.00 sec)

mysql> SELECT TRUNCATE(1.999,0);
+-------------------+
| TRUNCATE(1.999,0) |
+-------------------+
|                 1 |
+-------------------+
1 row in set (0.00 sec)

mysql> SELECT TRUNCATE(-1.999,1);
+--------------------+
| TRUNCATE(-1.999,1) |
+--------------------+
|               -1.9 |
+--------------------+
1 row in set (0.00 sec)

Desde MySQL 3.23.51, todos los números se redondean hacia cero. Si D es negativo, entonces la parte correspondiente del número es asignada a cero:

mysql> SELECT TRUNCATE(122,-2);
+------------------+
| TRUNCATE(122,-2) |
+------------------+
|              100 |
+------------------+
1 row in set (0.00 sec)

Como los números decimales normalmente no se almacenan como números exactos en los ordenadores, sino como valores de doble precisión, el siguente resultado puede parecer sorprendente:

mysql> SELECT TRUNCATE(10.28*100,0);
+-----------------------+
| TRUNCATE(10.28*100,0) |
+-----------------------+
|                  1027 |
+-----------------------+
1 row in set (0.00 sec)

Lo anterior sucede porque 10.28 se almacena como algo parecido a 10.2799999999999999.