Funciones matemáticas de MySQL

En ocasiones podemos necesitar realizar cálculos que van más allá de las operaciones básicas de suma y multiplicación. En este post se hace un pequeño repaso a las funciones matemáticas de MySQL, con algunos ejemplos de uso.

ABS(n): el nombre de la función es una abreviatura "absoluto". Esta función devuelve el valor absoluto de n, que puede ser positivo o negativo. En matemática, el valor absoluto o módulo de un número real es su valor numérico sin tener en cuenta su signo, sea este positivo (+) o negativo (-). Así, por ejemplo, 3 es el valor absoluto de 3 y de -3.

SELECT ABS(4);

Devuelve 4.

SELECT ABS(-12);

Devuelve 12.

ACOS(n) y ASIN(n): abreviaturas de "arcocoseno" y "arcoseno". Retornan el arcocoseno y el arcoseno de n. Los siguientes ejemplos muestran el arcoseno y el arcocoseno de 1/2 y la raiz(2)/2 que equivalen respectivamente 30 y 45 grados.

SELECT ASIN(1/2), ACOS(sqrt(2)/2);

Devuelven 0,523598775598299 y 0,785398163397448. Los resultados se dan en radianes, así que los valores resultantes no son 30 y 45, pero la conversión para la verificación puede hacerse utilizando la función DEGREES, que se explica a continuación.

ATAN(n) y ATAN2(y,x): estas funciones devuelven el valor cuyo arco tangente se pasa como parámetro. En la primera forma, sólo pasa un argumento, mientras que en el segundo se pasan dos valores x e y, y el resultado es el arco cuya tangente es y/x.

CEIL(n) y CEILING(n): la función CEIL es una forma compacta de CEILING, por lo que ambas tienen el mismo comportamiento, devolviendo el entero más pequeño que es mayor que el valor pasado como parámetro. Por ejemplo, el valor entero más pequeño y más cercano de 1.54 es 2. Mientras que para el -2,3 el resultado sería -2, porque -2 es mayor que -2,3.

CONV(n,desde_base,a_base): realiza la conversión de un número entre bases numéricas distintas, como decimal y hexadecimal. Esta función toma tres argumentos: el valor que desea convertir, la base original y la base a la que se desea convertir el número.

SELECT CONV('a',16,2);

Retorna 1010

SELECT CONV('6E',18,8);

Retorna 172.

El siguiente código muestra tres ejemplos de conversión del número 20 a binario, octal y hexadecimal respectivamente.

SELECT CONV(20,10,2), CONV(20,10,16), CONV(20,10,8);

COS(n) y SIN(n): como su nombre indican, estas funciones devuelven los valores del coseno y el seno del ángulo especificado (en radianes) como argumento. La figura 5 muestra ejemplos de cómo utilizar estas funciones.

COT(n) y TAN(n): la primera devuelve la cotangente de un ángulo, mientras que la segunda devuelve la propia tangente, por lo que son funciones inversas. El siguiente código muestra un ejemplo del uso de ambas funciones, pasando como argumento el valor de PI/4, lo que equivale a 45 grados en radianes.

SELECT TAN(PI()/4),COT(PI()/4);

DEGREES(n) y RADIANS(n): se podría decir que son funciones inversas, porque mientras la primera convierte un valor de radianes a grados, la segunda convierte un valor de grados en radianes. El siguiente código muestra un ejemplo de conversión equivalente, puesto que PI radianes equivalen a 180 grados.

SELECT DEGREES(PI()), RADIANS(180);

EXP(n): La función EXP recibe un valor como argumento, devolviendo el valor exponencial del mismo.

FLOOR(n): Esta función es similar a CEIL, sin embargo, el resultado es el entero más pequeño por debajo del valor pasado. Por ejemplo, el valor entero más pequeño por debajo de 1.23 es 1, mientras que para el -2,3 valor, el resultado es -3, que es menos de -2,3.

LN(n), LOG2(n), LOG10(n) y LOG(n): las tres primeras devuelven, respectivamente, el valor del logaritmo natural, logaritmo en base 2 y el logaritmo en base 10 del valor especificado como parámetro. La función LOG puede ser utilizada de dos maneras: en primer lugar, si sólo se pasa un argumento, el resultado es el logaritmo natural. Si se pasan dos valores (A y B) como parámetros el resultado es el logaritmo de A en base B. Por ejemplo:

SELECT LN(10), LOG2(10), LOG10(10), LOG(10), LOG(10,3);

MOD(x,y): recibe dos argumentos como parámetro y devuelve el resto de la división del primero por el segundo. Por ejemplo, la instrucción MOD(10,3) devuelve el valor 1, que es el resto de la división 10 entre 3.

PI: Esta función devuelve el valor de la constante matemática de PI (3,141593...), que es la razón entre la circunferencia de un círculo y su diámetro.

POW(x,y) y POWER(x,y): funcionan del mismo modo, recibiendo dos parámetros, devuelven el valor del primero elevado al segundo. Por ejemplo, POW(3,2) es igual vale 9 puesto que 3 elevado al cuadrado es igual a 9.

RAND: devuelve un valor decimal aleatorio. Si se pasa como parámetro un valor entero, este se utiliza como "semilla". Para una misma raíz, el valor aleatorio es siempre el mismo.

SELECT RAND(20);

Retornará 0,15888261251047.

ROUND: Esta función redondea un valor al número de decimales dados como parámetro. Si se pasa solo un parametro, ROUND redondea el parámetro pasado al entero, porque la cantidad de decimales asumidos es igual a cero. Pasando dos parámetros, el primero indica el valor a ser redondeado, mientras que el segundo indica el número de decimales a considerar. A continuación se presentan ejemplos de uso en ambos casos.

SELECT ROUND(-1.23);

Retornará -1.

SELECT ROUND(3.1415926,3);

Retornará 3,142.

SIGN(n): la función SIGN devuelve el signo del número pasado como parámetro, representado por 1 si el argumento es positivo (mayor que cero) o -1 si es negativo (menos de cero).

SQRT(n): devuelve la raiz cuadrada del valor pasado. Por ejemplo, SQRT(4) retorna 2.

TRUNCATE(x,y): Retorna el número x, truncado a y decimales. Si y es 0, el resultado no tiene punto decimal o parte fraccional.