Tipo de dato numérico en SQL
Crear datos numéricos en SQL es bastante sencillo: puedes escribir un número como literal, obtenerlo de una columna de una tabla o generarlo mediante cálculos.
En los cálculos puedes usar todas las operaciones aritméticas habituales (+, -, *, / y otras) y cambiar el orden de evaluación con paréntesis.
MySQL 8.4SELECT 2 * ((22 - 16) / (2 + 1)) AS calc_example;
Funciones matemáticas
Para la mayoría de los cálculos matemáticos, como elevar un número a una potencia o calcular su raíz cuadrada, SQL tiene funciones numéricas integradas. Estos son algunos ejemplos:
La lista de todas las funciones numéricas, con su descripción y ejemplos, la tienes en la Referencia SQL.
La lista de todas las funciones numéricas, con su descripción y ejemplos, la tienes en la Referencia SQL.
Redondeo de números
Al trabajar con números de coma flotante, no siempre hace falta guardar o mostrar los números con toda su precisión. Por ejemplo, las transacciones de dinero se pueden guardar con 6 decimales y mostrarse con 2, es decir, con precisión de céntimos.
Para redondear datos numéricos, SQL ofrece estas 4 funciones: CEILING, FLOOR, ROUND, TRUNCATE.
Las funciones CEILING y FLOOR redondean un número al entero más cercano hacia arriba y hacia abajo, respectivamente.
MySQL 8.4SELECT CEILING(69.69) AS ceiling, FLOOR(69.69) AS floor;
Para redondear datos numéricos, SQL ofrece estas 4 funciones: CEIL, FLOOR, ROUND, TRUNC.
Las funciones CEIL y FLOOR redondean un número al entero más cercano hacia arriba y hacia abajo, respectivamente.
MySQL 8.4SELECT CEIL(69.69) AS ceiling, FLOOR(69.69) AS floor;
Para redondear al entero más cercano existe la función ROUND: cualquier número cuya parte decimal sea mayor o igual que 0,5 lo redondea hacia arriba y, si no, hacia abajo.
MySQL 8.4SELECT ROUND(69.499), ROUND(69.5), ROUND(69.501);
La función ROUND también permite redondear un número a una cantidad determinada de decimales. Para ello acepta un segundo argumento opcional con el número de decimales que quieres conservar.
MySQL 8.4SELECT ROUND(69.7171,1), ROUND(69.7171,2), ROUND(69.7171,3);
El segundo argumento de ROUND también admite valores negativos. En ese caso, tantas cifras a la izquierda del punto decimal como indique el argumento pasan a ser cero y la parte decimal se descarta.
MySQL 8.4SELECT ROUND(1691.7,-1), ROUND(1691.7,-2), ROUND(1691.7,-3);
La función TRUNCATE es análoga a ROUND y también acepta un 2.º parámetro opcional, solo que, en lugar de redondear, simplemente descarta las cifras que sobran.
MySQL 8.4SELECT TRUNCATE(69.7979,1), TRUNCATE(69.7979,2), TRUNCATE(69.7979,3);
¿Y qué devolverá la siguiente expresión?
MySQL 8.4SELECT TRUNCATE(69.7979, -1);
La función TRUNC es análoga a ROUND y también acepta un 2.º parámetro opcional, solo que, en lugar de redondear, simplemente descarta las cifras que sobran.
MySQL 8.4SELECT TRUNC(69.7979,1), TRUNC(69.7979,2), TRUNC(69.7979,3);
¿Y qué devolverá la siguiente expresión?
MySQL 8.4SELECT TRUNC(69.7979, -1);
Trabajo con números con signo
Cuando trabajas con datos numéricos que pueden contener valores negativos, te pueden resultar útiles las funciones SIGN y ABS.
La función SIGN devuelve -1 si el número es negativo, 0 si es cero y 1 si es positivo.
MySQL 8.4SELECT SIGN(-69), SIGN(0), SIGN(69);
La función ABS devuelve el valor absoluto de un número.
MySQL 8.4SELECT ABS(-69), ABS(0), ABS(69);