Maison > base de données > tutoriel mysql > Tutoriel de base MySQL 8 - Fonctions numériques des fonctions

Tutoriel de base MySQL 8 - Fonctions numériques des fonctions

黄舟
Libérer: 2017-02-24 11:35:26
original
1178 Les gens l'ont consulté


1. Opérateurs arithmétiques

Des opérateurs arithmétiques courants peuvent être utilisés. Notez que pour - et *, si les deux paramètres sont des nombres positifs, la précision du résultat du calcul est BIGINT (64 bits). Si un paramètre est un entier non signé et que les autres paramètres sont également des nombres entiers, le résultat est un entier non signé.

Plus :

mysql> SELECT 3+5;
-> 8
Copier après la connexion
  • -

Signe moins :

mysql> SELECT 3-5;
-> -2
Copier après la connexion
  • -

Signe moins d'un dollar. Remplacez les symboles de paramètres.

mysql> SELECT - 2;
-> -2
Copier après la connexion

Remarque : Si l'opérateur est utilisé avec un BIGINT en même temps, la valeur de retour est également un BIGINT. Cela signifie que vous devriez essayer d'éviter d'utiliser – avec des entiers qui pourraient donner –263.

  • *

Signe de multiplication :

mysql> SELECT 3*5;
-> 15
mysql> SELECT 18014398509481984*18014398509481984.0;
-> 324518553658426726783156020576256.0
mysql> SELECT 18014398509481984*18014398509481984;
-> 0
Copier après la connexion

Le résultat de la dernière expression est incorrect. La raison en est que le résultat de la multiplication d'entiers dépasse la plage de 64 bits des calculs BIGINT.

  • /

Signe de division :

mysql> SELECT 3/5;
-> 0.60
Copier après la connexion

Le résultat de la division par zéro est NULL :

mysql> SELECT 102/(1-1);
-> NULL
Copier après la connexion

La division ne sera utilisée avec l'algorithme BIGINT que si le contexte d'exécution est tel que le résultat doit être converti en un entier.

  • p

Division entière. Semblable à FLOOR(), mais l'utilisation de l'algorithme BIGINT est également fiable.

mysql> SELECT 5 p 2;
-> 2
Copier après la connexion

2. Fonctions mathématiques

Si une erreur se produit, toutes les fonctions mathématiques renverront NULL.

  • ABS(X)

renvoie la valeur absolue de X.

mysql> SELECT ABS(2);
-> 2
mysql> SELECT ABS(-32);
-> 32
Copier après la connexion

Cette fonction prend en charge l'utilisation des valeurs BIGINT.

  • ACOS(X)

renvoie le cosinus inverse de X, c'est-à-dire le cosinus est< La valeur de 🎜>X. Si X n'est pas compris entre -1 et 1, NULL est renvoyé.

mysql> SELECT ACOS(1);
-> 0
mysql> SELECT ACOS(1.0001);
-> NULL
mysql> SELECT ACOS(0);
-> 1.5707963267949
Copier après la connexion
  • ASIN(

    X)

Renvoie le sinus inverse de

X, c'est-à-dire que le sinus est la valeur de X. Si X Si X n'est pas compris entre -1 et 1, alors NULL est renvoyé.

mysql> SELECT ASIN(0.2);        -> 0.20135792079033
mysql> SELECT ASIN(&#39;foo&#39;);+-------------+
| ASIN(&#39;foo&#39;) |
+-------------+
|           0 |
+-------------+
1 row in set, 1 warning (0.00 sec)

mysql> SHOW WARNINGS;+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: &#39;foo&#39; |
+---------+------+-----------------------------------------+
Copier après la connexion
  • ATAN(

    X)

renvoie l'arc tangent de

X, c'est-à-dire que la tangente est la valeur de X.

mysql> SELECT ATAN(2);
-> 1.1071487177941
mysql> SELECT ATAN(-2);
-> -1.1071487177941
Copier après la connexion
  • ATAN(

    Y,X) , ATAN2(Y,X)

renvoie l'arc tangent des deux variables

X et Y. Il est similaire au calcul de l'arctangente de Y ou X, sauf que les signes des deux paramètres sont utilisés pour déterminer le quadrant du résultat.

mysql> SELECT ATAN(-2,2);
-> -0.78539816339745
mysql> SELECT ATAN2(PI(),0);
-> 1.5707963267949
Copier après la connexion
  • PLAFOND(

    X) CEIL(X)

ne revient pas moins que La valeur entière minimale de

X.

mysql> SELECT CEILING(1.23);
-> 2
mysql> SELECT CEIL(-1.23);
-> -1
Copier après la connexion
Ces deux fonctions ont la même signification. Notez que la valeur de retour sera convertie en BIGINT.

  • COS(

    X)

Renvoie le cosinus de

X, où X Connu en radians.

mysql> SELECT COS(PI());
-> -1
Copier après la connexion
  • COT(

    X)

Renvoie la cotangente de

X.

mysql> SELECT COT(12);
-> -1.5726734063977
mysql> SELECT COT(0);
-> NULL
Copier après la connexion
  • CRC32(

    expr)

Calculez la valeur de contrôle du code de redondance cyclique et renvoyez un 32 bits valeur Valeur non signée. Si le paramètre est NULL, le résultat est NULL. L'argument doit être une chaîne et sera traité comme tel (si possible) s'il ne s'agit pas d'une chaîne.

mysql> SELECT CRC32(&#39;MySQL&#39;);
-> 3259397556
mysql> SELECT CRC32(&#39;mysql&#39;);
-> 2501908538
Copier après la connexion
  • DEGRÉS(

    X)

Paramètre de retour

X, qui est représenté Les radians sont convertis en degrés.

mysql> SELECT DEGREES(PI());
-> 180
mysql> SELECT DEGREES(PI() / 2);
-> 90
Copier après la connexion
  • EXP(

    X)

Renvoie la puissance

X de e Le valeur de (la base du logarithme népérien).

mysql> SELECT EXP(2);
-> 7.3890560989307
mysql> SELECT EXP(-2);
-> 0.13533528323661
mysql> SELECT EXP(0);
-> 1
Copier après la connexion
  • FLOOR(

    X)

Renvoie le plus grand entier non supérieur à

X valeur.

mysql> SELECT FLOOR(1.23);
-> 1
mysql> SELECT FLOOR(-1.23);
-> -2
Copier après la connexion
Notez que la valeur de retour sera convertie en BIGINT.

  • FORMAT(

    X,D)

Modifier le numéro

X est écrit au format '#,###,###.##', c'est-à-dire que les chiffres D sont conservés après la virgule décimale et le D-ème chiffre est conservé par arrondi , puis le résultat est exprimé sous forme de retour sous forme de chaîne.

  • LN(

    X)

renvoie le logarithme népérien de

X, c'est-à-dire X Le logarithme relatif à la base e.

mysql> SELECT LN(2);
-> 0.69314718055995
mysql> SELECT LN(-2);
-> NULL
Copier après la connexion
Cette fonction a la même signification que LOG(

X).

  • LOG(

    X) LOG(B,X)

Si elle est appelée avec un argument, cette fonction renverra le logarithme népérien de

X.

mysql> SELECT LOG(2);
-> 0.69314718055995
mysql> SELECT LOG(-2);
-> NULL
Copier après la connexion
Si elle est appelée avec deux paramètres, cette fonction renverra le logarithme de

X pour n'importe quelle base B.

mysql> SELECT LOG(2,65536);
-> 16
mysql> SELECT LOG(10,100);
-> 2
Copier après la connexion
LOG(

B,X) est équivalent à LOG(X) / LOG(B ).

  • LOG2(X)

返回X 的基数为2的对数。

mysql> SELECT LOG2(65536);
-> 16
mysql> SELECT LOG2(-100);
-> NULL
Copier après la connexion

对于查出存储一个数字需要多少个比特,LOG2()非常有效。这个函数相当于表达式 LOG(X) / LOG(2)。

  • LOG10(X)

返回X的基数为10的对数。

mysql> SELECT LOG10(2);
-> 0.30102999566398
mysql> SELECT LOG10(100);
-> 2
mysql> SELECT LOG10(-100);
-> NULL
Copier après la connexion

LOG10(X)相当于LOG(10,X)。

  • MOD(N,M) , N % M N MOD M

模操作。返回NM除后的余数。

mysql> SELECT MOD(234, 10);
-> 4
mysql> SELECT 253 % 7;
-> 1
mysql> SELECT MOD(29,9);
-> 2
mysql> SELECT 29 MOD 9;
-> 2
Copier après la connexion

这个函数支持使用BIGINT 值。

MOD() 对于带有小数部分的数值也起作用, 它返回除法运算后的精确余数:

mysql> SELECT MOD(34.5,3);
-> 1.5
Copier après la connexion
  • PI()

返回 ϖ (pi)的值。默认的显示小数位数是7位,然而 MySQL内部会使用完全双精度值。

mysql> SELECT PI();
-> 3.141593
mysql> SELECT PI()+0.000000000000000000;
-> 3.141592653589793116
Copier après la connexion
  • POW(X,Y) , POWER(X,Y)

返回XY乘方的结果值。

mysql> SELECT POW(2,2);
-> 4
mysql> SELECT POW(2,-2);
-> 0.25
Copier après la connexion
  • RADIANS(X)

返回由度转化为弧度的参数 X, (注意 ϖ 弧度等于180度)。

mysql> SELECT RADIANS(90);
-> 1.5707963267949
Copier après la connexion
  • RAND() RAND(N)

返回一个随机浮点值 v ,范围在 0 到1 之间 (即, 其范围为 0 ≤ v ≤ 1.0)。若已指定一个整数参数 N ,则它被用作种子值,用来产生重复序列。

mysql> SELECT RAND();
-> 0.9233482386203
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND();
-> 0.63553050033332
mysql> SELECT RAND();
-> 0.70100469486881
mysql> SELECT RAND(20);
-> 0.15888261251047
Copier après la connexion

若要在iRj 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (ji + 1))。例如, 若要在7 到 12的范围(包括7和12)内得到一个随机整数, 可使用以下语句:

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

在ORDER BY语句中,不能使用一个带有RAND()值的列,原因是 ORDER BY 会计算列的多重时间。然而,可按照如下的随机顺序检索数据行:

mysql> SELECT * FROM tbl_name ORDER BY RAND();

ORDER BY RAND()同 LIMIT 的结合从一组列中选择随机样本很有用:

mysql> SELECT * FROM table1, table2 WHERE a=b AND c<d
-> ORDER BY RAND() LIMIT 1000;
Copier après la connexion


注意,在WHERE语句中,WHERE每执行一次, RAND()就会被再计算一次。

RAND()的作用不是作为一个精确的随机发生器,而是一种用来发生在同样的 MySQL版本的平台之间的可移动ad hoc随机数的快速方式。

  • ROUND(X) ROUND(X,D)

返回参数X, 其值接近于最近似的整数。在有两个参数的情况下,返回 X ,其值保留到小数点后D位,而第D位的保留方式为四舍五入。若要接保留X值小数点左边的D 位,可将 D 设为负值。

mysql> SELECT ROUND(-1.23);
-> -1
mysql> SELECT ROUND(-1.58);
-> -2
mysql> SELECT ROUND(1.58);
-> 2
mysql> SELECT ROUND(1.298, 1);
-> 1.3
mysql> SELECT ROUND(1.298, 0);
-> 1
mysql> SELECT ROUND(23.298, -1);
-> 20
Copier après la connexion

返回值的类型同 第一个自变量相同(假设它是一个整数、双精度数或小数)。这意味着对于一个整数参数,结果也是一个整数(无小数部分)。

当第一个参数是十进制常数时,对于准确值参数,ROUND() 使用精密数学题库:

    • 对于准确值数字, ROUND() 使用“四舍五入” 或“舍入成最接近的数” 的规则:对于一个分数部分为 .5或大于 .5的值,正数则上舍入到邻近的整数值, 负数则下舍入临近的整数值。(换言之, 其舍入的方向是数轴上远离零的方向)。对于一个分数部分小于.5 的值,正数则下舍入下一个整数值,负数则下舍入邻近的整数值,而正数则上舍入邻近的整数值。

    • 对于近似值数字,其结果根据C 库而定。在很多系统中,这意味着 ROUND()的使用遵循“舍入成最接近的偶数”的规则: 一个带有任何小数部分的值会被舍入成最接近的偶数整数。

以下举例说明舍入法对于精确值和近似值的不同之处:

mysql> SELECT ROUND(2.5), ROUND(25E-1);
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
| 3          |            2 |
+------------+--------------+
Copier après la connexion
  • SIGN(X)

返回参数作为-1、 0或1的符号,该符号取决于X 的值为负、零或正。

mysql> SELECT SIGN(-32);
-> -1
mysql> SELECT SIGN(0);
-> 0
mysql> SELECT SIGN(234);
-> 1
Copier après la connexion
  • SIN(X)

返回X 正弦,其中 X 在弧度中被给定。

mysql> SELECT SIN(PI());
-> 1.2246063538224e-16
mysql> SELECT ROUND(SIN(PI()));
-> 0
Copier après la connexion
  • SQRT(X)

返回非负数X 的二次方根。

mysql> SELECT SQRT(4);
-> 2
mysql> SELECT SQRT(20);
-> 4.4721359549996
mysql> SELECT SQRT(-16);
-> NULL
Copier après la connexion
  • TAN(X)

返回X 的正切,其中X 在弧度中被给定。

mysql> SELECT TAN(PI());
-> -1.2246063538224e-16
mysql> SELECT TAN(PI()+1);
-> 1.5574077246549
Copier après la connexion
  • TRUNCATE(X,D)

返回被舍去至小数点后D位的数字X。若D 的值为 0, 则结果不带有小数点或不带有小数部分。可以将D设为负数,若要截去(归零) X小数点左起第D位开始后面所有低位的值.

mysql> SELECT TRUNCATE(1.223,1);
-> 1.2
mysql> SELECT TRUNCATE(1.999,1);
-> 1.9
mysql> SELECT TRUNCATE(1.999,0);
-> 1
mysql> SELECT TRUNCATE(-1.999,1);
-> -1.9
mysql> SELECT TRUNCATE(122,-2);
-> 100
mysql> SELECT TRUNCATE(10.28*100,0);
-> 1028
Copier après la connexion

所有数字的舍入方向都接近于零。

 以上就是MySQL基础教程8 —— 函数之数值函数的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal