Heim  >  Artikel  >  Datenbank  >  MySQL-Grundlagen-Tutorial 8 – Numerische Funktionen von Funktionen

MySQL-Grundlagen-Tutorial 8 – Numerische Funktionen von Funktionen

黄舟
黄舟Original
2017-02-24 11:35:261124Durchsuche


1. Arithmetische Operatoren

Es können gängige arithmetische Operatoren verwendet werden. Beachten Sie, dass für -, + und * die Genauigkeit des Berechnungsergebnisses BIGINT (64 Bit) beträgt. Wenn einer der Parameter eine vorzeichenlose Ganzzahl ist und die anderen Parameter ebenfalls Ganzzahlen sind, ist das Ergebnis eine Ganzzahl ohne Vorzeichen.

  • +

Plus:

mysql> SELECT 3+5;
-> 8
  • -

Minuszeichen:

mysql> SELECT 3-5;
-> -2
  • -

Ein Dollar-Minuszeichen. Ersetzen Sie Parametersymbole.

mysql> SELECT - 2;
-> -2

Hinweis: Wenn der Operator gleichzeitig mit einem BIGINT verwendet wird, ist der Rückgabewert ebenfalls ein BIGINT. Dies bedeutet, dass Sie versuchen sollten, die Verwendung von – mit ganzen Zahlen zu vermeiden, da dies zu –263 führen könnte.

  • *

Multiplikationszeichen:

mysql> SELECT 3*5;
-> 15
mysql> SELECT 18014398509481984*18014398509481984.0;
-> 324518553658426726783156020576256.0
mysql> SELECT 18014398509481984*18014398509481984;
-> 0

Das Ergebnis des letzten Ausdrucks ist falsch. Der Grund dafür ist, dass das Ergebnis der Ganzzahlmultiplikation den 64-Bit-Bereich der BIGINT-Berechnungen überschreitet.

  • /

Divisionszeichen:

mysql> SELECT 3/5;
-> 0.60

Das Ergebnis der Division durch Null ist NULL:

mysql> SELECT 102/(1-1);
-> NULL

Division wird nur dann mit dem BIGINT-Algorithmus verwendet, wenn der Ausführungskontext so ist, dass das Ergebnis in eine ganze Zahl umgewandelt werden soll.

  • p

Ganzzahldivision. Ähnlich wie FLOOR(), jedoch ist die Verwendung des BIGINT-Algorithmus ebenfalls zuverlässig.

mysql> SELECT 5 p 2;
-> 2

2. Mathematische Funktionen

Wenn ein Fehler auftritt, geben alle mathematischen Funktionen NULL zurück.

  • ABS(X)

gibt den absoluten Wert von X zurück.

mysql> SELECT ABS(2);
-> 2
mysql> SELECT ABS(-32);
-> 32

Diese Funktion unterstützt die Verwendung von BIGINT-Werten.

  • ACOS(X)

gibt den Umkehrkosinus von X zurück, d. h. der Kosinus istX. Wenn X nicht im Bereich von -1 bis 1 liegt, wird NULL zurückgegeben.

mysql> SELECT ACOS(1);
-> 0
mysql> SELECT ACOS(1.0001);
-> NULL
mysql> SELECT ACOS(0);
-> 1.5707963267949
  • ASIN(

    X)

Gibt den Umkehrsinus von

X zurück, das heißt, Sinus ist der Wert von X. Wenn X Wenn X nicht im Bereich von -1 bis 1 liegt, wird NULL zurückgegeben.

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

mysql> SHOW WARNINGS;+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'foo' |
+---------+------+-----------------------------------------+
  • ATAN(

    X)

gibt den Arcustangens von

X zurück, das heißt, der Tangens ist der Wert von X.

mysql> SELECT ATAN(2);
-> 1.1071487177941
mysql> SELECT ATAN(-2);
-> -1.1071487177941
  • ATAN(

    Y,X) , ATAN2(Y,X)

gibt den Arcustangens der beiden Variablen

X und Y zurück. Sie ähnelt der Arkustangensberechnung von Y oder X, außer dass die Vorzeichen beider Parameter verwendet werden, um den Quadranten des Ergebnisses zu bestimmen.

mysql> SELECT ATAN(-2,2);
-> -0.78539816339745
mysql> SELECT ATAN2(PI(),0);
-> 1.5707963267949
  • CEILING(

    X) CEIL(X)

gibt nicht weniger zurück als Der minimale ganzzahlige Wert von

X.

mysql> SELECT CEILING(1.23);
-> 2
mysql> SELECT CEIL(-1.23);
-> -1
Diese beiden Funktionen haben die gleiche Bedeutung. Beachten Sie, dass der Rückgabewert in einen BIGINT umgewandelt wird.

  • COS(

    X)

Gibt den Kosinus von

X zurück, wobei X Wird im Bogenmaß angegeben.

mysql> SELECT COS(PI());
-> -1
  • COT(

    X)

Gibt den Kotangens von

X zurück.

mysql> SELECT COT(12);
-> -1.5726734063977
mysql> SELECT COT(0);
-> NULL
  • CRC32(

    expr)

Berechnen Sie den zyklischen Redundanzcode-Prüfwert und geben Sie einen 32-Bit zurück Wert Wert ohne Vorzeichen. Wenn der Parameter NULL ist, ist das Ergebnis NULL. Das Argument sollte eine Zeichenfolge sein und wird (falls möglich) als solche behandelt, wenn es sich nicht um eine Zeichenfolge handelt.

mysql> SELECT CRC32('MySQL');
-> 3259397556
mysql> SELECT CRC32('mysql');
-> 2501908538
  • DEGREES(

    X)

Rückgabeparameter

X, der dargestellt wird von Bogenmaß werden in Grad umgerechnet.

mysql> SELECT DEGREES(PI());
-> 180
mysql> SELECT DEGREES(PI() / 2);
-> 90
  • EXP(

    X)

Gibt die

X-Leistung von e The zurück Wert von (die Basis des natürlichen Logarithmus).

mysql> SELECT EXP(2);
-> 7.3890560989307
mysql> SELECT EXP(-2);
-> 0.13533528323661
mysql> SELECT EXP(0);
-> 1
  • FLOOR(

    X)

Gibt die größte Ganzzahl zurück, die nicht größer als

X Wert.

Beachten Sie, dass der Rückgabewert in einen BIGINT umgewandelt wird.
mysql> SELECT FLOOR(1.23);
-> 1
mysql> SELECT FLOOR(-1.23);
-> -2

    FORMAT(
  • X

    ,D)

  • Ändern Sie die Zahl
X

wird im Format „#,###,###.##“ geschrieben, d. h. D Ziffern bleiben nach dem Dezimalpunkt erhalten und die D-te Ziffer bleibt durch Rundung erhalten , und dann wird das Ergebnis als Rückgabe in Zeichenfolgenform ausgedrückt.

    LN(
  • X

    )

  • gibt den natürlichen Logarithmus von
X

zurück, d. h. X Der Logarithmus relativ zur Basis e.

Diese Funktion hat die gleiche Bedeutung wie LOG(
mysql> SELECT LN(2);
-> 0.69314718055995
mysql> SELECT LN(-2);
-> NULL
X

).

    LOG(
  • X

    ) LOG(B,X)

  • Wenn diese Funktion mit einem Argument aufgerufen wird, gibt sie den natürlichen Logarithmus von
X

zurück.

Wenn diese Funktion mit zwei Parametern aufgerufen wird, gibt sie den Logarithmus von
mysql> SELECT LOG(2);
-> 0.69314718055995
mysql> SELECT LOG(-2);
-> NULL
X

für jede Basis B zurück.

LOG(
mysql> SELECT LOG(2,65536);
-> 16
mysql> SELECT LOG(10,100);
-> 2
B

,X) entspricht LOG(X) / LOG(B ).

  • LOG2(X)

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

mysql> SELECT LOG2(65536);
-> 16
mysql> SELECT LOG2(-100);
-> NULL

对于查出存储一个数字需要多少个比特,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

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

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

模操作。返回N 被 M除后的余数。

mysql> SELECT MOD(234, 10);
-> 4
mysql> SELECT 253 % 7;
-> 1
mysql> SELECT MOD(29,9);
-> 2
mysql> SELECT 29 MOD 9;
-> 2

这个函数支持使用BIGINT 值。

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

mysql> SELECT MOD(34.5,3);
-> 1.5
  • PI()

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

mysql> SELECT PI();
-> 3.141593
mysql> SELECT PI()+0.000000000000000000;
-> 3.141592653589793116
  • POW(X,Y) , POWER(X,Y)

返回X 的Y乘方的结果值。

mysql> SELECT POW(2,2);
-> 4
mysql> SELECT POW(2,-2);
-> 0.25
  • RADIANS(X)

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

mysql> SELECT RADIANS(90);
-> 1.5707963267949
  • 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

若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 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;


注意,在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

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

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

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

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

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

mysql> SELECT ROUND(2.5), ROUND(25E-1);
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
| 3          |            2 |
+------------+--------------+
  • SIGN(X)

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

mysql> SELECT SIGN(-32);
-> -1
mysql> SELECT SIGN(0);
-> 0
mysql> SELECT SIGN(234);
-> 1
  • SIN(X)

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

mysql> SELECT SIN(PI());
-> 1.2246063538224e-16
mysql> SELECT ROUND(SIN(PI()));
-> 0
  • SQRT(X)

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

mysql> SELECT SQRT(4);
-> 2
mysql> SELECT SQRT(20);
-> 4.4721359549996
mysql> SELECT SQRT(-16);
-> NULL
  • TAN(X)

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

mysql> SELECT TAN(PI());
-> -1.2246063538224e-16
mysql> SELECT TAN(PI()+1);
-> 1.5574077246549
  • 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

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

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn