Buscar..


Observaciones

MySQL, en la mayoría de las máquinas, utiliza la aritmética de punto flotante IEEE 754 de 64 bits para sus cálculos.

En contextos enteros utiliza aritmética de enteros.

  • RAND() no es un generador de números aleatorios perfecto. Se utiliza principalmente para generar rápidamente números pseudoaleatorios.

Operadores aritméticos

MySQL proporciona los siguientes operadores aritméticos

Operador Nombre Ejemplo
+ Adición SELECT 3+5; -> 8
SELECT 3.5+2.5; -> 6.0
SELECT 3.5+2; -> 5.5
- Sustracción SELECT 3-5; -> -2
* Multiplicación SELECT 3 * 5; -> 15
/ División SELECT 20 / 4; -> 5
SELECT 355 / 113; -> 3.1416
SELECT 10.0 / 0; -> NULL
DIV División entera SELECT 5 DIV 2; -> 2
% o MOD Modulo SELECT 7 % 3; -> 1
SELECT 15 MOD 4 -> 3
SELECT 15 MOD -4 -> 3
SELECT -15 MOD 4 -> -3
SELECT -15 MOD -4 -> -3
SELECT 3 MOD 2.5 -> 0.5

BIGINT

Si los números en su aritmética son todos enteros, MySQL usa el tipo de datos entero BIGINT (con signo de 64 bits) para hacer su trabajo. Por ejemplo:

select (1024 * 1024 * 1024 * 1024 *1024 * 1024) + 1 -> 1,152,921,504,606,846,977

y

select (1024 * 1024 * 1024 * 1024 *1024 * 1024 * 1024 -> BIGINT error fuera de rango

DOBLE

Si algún número en su aritmética es fraccional, MySQL usa aritmética de punto flotante IEEE 754 de 64 bits . Debe tener cuidado al usar la aritmética de punto flotante, porque muchos números de punto flotante son, inherentemente, aproximaciones en lugar de valores exactos .

Constantes matemáticas

Pi

Lo siguiente devuelve el valor de PI formateado a 6 lugares decimales. El valor real es bueno para DOUBLE ;

SELECT PI();    -> 3.141593

Trigonometría (SIN, COS)

Los ángulos están en radianes, no en grados. Todos los cálculos se realizan en punto flotante de 64 bits IEEE 754 . Todos los cálculos de punto flotante están sujetos a pequeños errores, conocidos como errores de la máquina ε (épsilon) , así que evite intentar compararlos para la igualdad. No hay forma de evitar estos errores cuando se utiliza un punto flotante; Están incorporados a la tecnología.

Si usa valores DECIMAL en los cálculos trigonométricos, se convierten implícitamente a punto flotante y luego regresan a decimal.

Seno

Devuelve el seno de un número X expresado en radianes

SELECT SIN(PI()); -> 1.2246063538224e-16

Coseno

Devuelve el coseno de X cuando X se da en radianes

SELECT COS(PI()); -> -1

Tangente

Devuelve la tangente de un número X expresado en radianes. Observe que el resultado es muy cercano a cero, pero no exactamente a cero. Este es un ejemplo de máquina ε.

SELECT TAN(PI());   -> -1.2246063538224e-16

Arco coseno (coseno inverso)

Devuelve el coseno del arco de X si X está en el rango de -1 to 1

SELECT ACOS(1);    -> 0
SELECT ACOS(1.01); -> NULL

Seno del arco (seno siniestro)

Devuelve el seno de arco de X si X está en el rango de -1 to 1

SELECT ASIN(0.2); -> 0.20135792079033

Arco tangente (tangente inverso)

ATAN(x) devuelve la tangente de arco de un solo número.

SELECT ATAN(2); -> 1.1071487177941

ATAN2(X, Y) devuelve el arco tangente de las dos variables X e Y. Es similar al cálculo del arco tangente de Y / X. Pero es numéricamente más robusto: t funciona correctamente cuando X está cerca de cero y los signos de ambos argumentos se utilizan para determinar el cuadrante del resultado.

Las mejores prácticas sugieren escribir fórmulas para usar ATAN2() lugar de ATAN() siempre que sea posible.

 ATAN2(1,1);    -> 0.7853981633974483 (45 degrees)
 ATAN2(1,-1);   -> 2.356194490192345  (135 degrees)
 ATAN2(0, -1);  -> PI  (180 degrees)  don't try ATAN(-1 / 0)... it won't work

Cotangente

Devuelve la cotangente de X

SELECT COT(12); -> -1.5726734063977

Conversión

SELECT RADIANS(90) -> 1.5707963267948966
SELECT SIN(RADIANS(90)) -> 1
SELECT DEGREES(1), DEGREES(PI()) -> 57.29577951308232, 180

Redondeo (REDONDO, PISO, CEIL)

Redondear un número decimal a un valor entero

Para valores numéricos exactos (p. Ej., DECIMAL ): si el primer lugar decimal de un número es 5 o más, esta función redondeará un número al siguiente entero que se encuentre alejado de cero . Si la posición decimal es 4 o inferior, esta función se redondeará al siguiente valor entero más cercano a cero .

SELECT ROUND(4.51) -> 5
SELECT ROUND(4.49) -> 4
SELECT ROUND(-4.51) -> -5

Para valores numéricos aproximados (p. Ej., DOUBLE ): El resultado de la función ROUND() depende de la biblioteca C; en muchos sistemas, esto significa que ROUND() utiliza la ronda a la regla par más cercana :

SELECT ROUND(45e-1) -> 4  -- The nearest even value is 4
SELECT ROUND(55e-1) -> 6  -- The nearest even value is 6

Redondear un numero

Para redondear un número, use la función CEIL() o CEILING()

SELECT CEIL(1.23)    -> 2
SELECT CEILING(4.83) -> 5

Redondear hacia abajo un número

Para redondear un número, use la función FLOOR()

SELECT FLOOR(1.99) -> 1

PISO y CEIL van hacia / lejos del infinito:

SELECT FLOOR(-1.01), CEIL(-1.01) -> -2 and -1
SELECT FLOOR(-1.99), CEIL(-1.99) -> -2 and -1

Redondear un número decimal a un número especificado de lugares decimales.

SELECT ROUND(1234.987, 2) -> 1234.99
SELECT ROUND(1234.987, -2) -> 1200

La discusión de arriba contra abajo y "5" también se aplica.

Elevar un número a una potencia (POW)

Para elevar un número x a una potencia y , use las funciones POW() o POWER()

SELECT POW(2,2); => 4
SELECT POW(4,2); => 16

Raíz cuadrada (SQRT)

Utilice la función SQRT() . Si el número es negativo, se devolverá NULL .

SELECT SQRT(16); -> 4
SELECT SQRT(-3); -> NULL

Números aleatorios (RAND)

Generar un número aleatorio

Para generar un número de punto flotante pseudoaleatorio entre 0 y 1 , use la función RAND()

Supongamos que tiene la siguiente consulta

SELECT i, RAND() FROM t;

Esto devolverá algo como esto

yo RAND ()
1 0.6191438870682
2 0.93845168309142
3 0.83482678498591

Número aleatorio en un rango

Para generar un número aleatorio en el rango a <= n <= b, puede usar la siguiente fórmula

FLOOR(a + RAND() * (b - a + 1))

Por ejemplo, esto generará un número aleatorio entre 7 y 12.

SELECT FLOOR(7 + (RAND() * 6));

Una forma sencilla de devolver aleatoriamente las filas de una tabla:

SELECT * FROM tbl ORDER BY RAND();

Estos son números pseudoaleatorios .

El generador de números pseudoaleatorios en MySQL no es criptográficamente seguro. Es decir, si usa MySQL para generar números aleatorios para usarlos como secretos, un adversario determinado que sabe que usó MySQL podrá adivinar sus secretos más fácilmente de lo que cree.

Valor absoluto y signo (ABS, SIGNO)

Devuelve el valor absoluto de un número.

SELECT ABS(2);   -> 2
SELECT ABS(-46); -> 46

El sign de un número lo compara con 0.

Firmar Resultado Ejemplo
-1 n <0 SELECT SIGN(42); -> 1
0 n = 0 SELECT SIGN(0); -> 0
1 n> 0 SELECT SIGN(-3); -> -1
SELECT SIGN(-423421); -> -1


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow