MySQL Numeric 函数
MySQL Numeric(数值)函数主要用于数值操作和/或数学计算。下表详细介绍了 Numeric 函数
序号 | 函数 | 描述 |
---|---|---|
1 | ABS() | 返回数值表达式的绝对值。 |
2 | ACOS() | 返回数值表达式的反余弦值。如果值不在 -1 到 1 的范围内,则返回 NULL。 |
3 | ASIN() | 返回数值表达式的反正弦。如果值不在 -1 到 1 的范围内,则返回 NULL |
4 | ATAN() | 返回数值表达式的反正切。 |
5 | ATAN2() | 返回传递给它的两个变量的反正切。 |
6 | CEIL() | 返回不小于参数数值表达式的最小整数值 |
7 | CEILING() | 返回不小于参数数值表达式的最小整数值 |
8 | COS() | 返回参数数值表达式的余弦。数值表达式应以弧度表示。 |
9 | COT() | 返回参数数值表达式的余切。 |
10 | DEGREES() | 返回从弧度转换为度数的数值表达式。 |
11 | EXP() | 返回自然对数 (e) 的底数,以传递的数值表达式的幂。 |
12 | FLOOR() | 返回不大于参数数值表达式的最大整数值。 |
13 | GREATEST() | 返回输入表达式的最大值。 |
14 | LEAST() | 当给定两个或更多数据时,返回最小值。 |
15 | LOG() | 返回参数数值表达式的自然对数。 |
16 | MOD() | 通过除以另一个表达式返回一个表达式的余数部分。 |
17 | PI() | 返回 pi 的值 |
18 | POW() | 返回以第一个参数为底,第二个参数为指数的幂 |
19 | POWER() | 返回幂值 |
20 | RADIANS() | 返回从度数转换为弧度的传递表达式的值。 |
21 | ROUND() | 回四舍五入为整数的数值表达式。也可用于保留几位小数。 |
22 | SIN() | 返回以弧度给出的数值表达式的正弦值。 |
23 | SQRT() | 返回数值表达式的非负平方根。 |
24 | TAN() | 返回以弧度表示的数值表达式的正切值。 |
25 | CRC32() | 返回值的循环冗余校验的值 |
下面我们来看一下这些函数的示例
ABS(X)
ABS() 函数返回 X 的绝对值。
mysql> SELECT ABS(225);
+----------+
| ABS(225) |
+----------+
| 225 |
+----------+
1 row in set (0.01 sec)
mysql> SELECT ABS(-55787);
+-------------+
| ABS(-55787) |
+-------------+
| 55787 |
+-------------+
1 row in set (0.41 sec)
ACOS(X)
此函数返回 X 的反余弦值。 X 的值必须介于 -1 和 1 之间,否则将返回 NULL。
mysql> SELECT ACOS(0.8);
+--------------------+
|ACOS(0.8) |
+--------------------+
| 0.6435011087932843 |
+--------------------+
1 row in set (0.00 sec)
ASIN(X)
ASIN() 函数返回 X 的反正弦值。 X 的值必须在 -1 到 1 的范围内,否则返回 NULL。
mysql> SELECT ASIN(0.8);
+--------------------+
| ASIN(0.8) |
+--------------------+
| 0.9272952180016123 |
+--------------------+
1 row in set (0.01 sec)
ATAN(X)
此函数返回 X 的反正切值。
mysql> SELECT ATAN(0.8);
+--------------------+
| ATAN(0.8) |
+--------------------+
| 0.6747409422235527 |
+--------------------+
1 row in set (0.07 sec)
ATAN2(Y,X)
此函数返回两个参数的反正切值:X 和 Y。它类似于 Y/X 的反正切,除了两者的符号用于查找结果的象限。
mysql> SELECT ATAN(-9, 8);
+--------------------+
| ATAN(-9, 8) |
+--------------------+
| -0.844153986113171 |
+--------------------+
1 row in set (0.04 sec)
CEIL(X) / CEILING(X)
这些函数返回不小于 X 的最小整数值。
mysql> SELECT CEIL (22.3);
+---------------+
| CEIL (22.3) |
+---------------+
| 23 |
+---------------+
1 row in set (0.03 sec)
mysql> SELECT CEIL (-105.0238);
+--------------------+
| CEIL(-105.0238) |
+--------------------+
| -105 |
+--------------------+
1 row in set (0.08 sec)
COS(X)
此函数返回 X 的余弦值。 X 的值以弧度给出。
mysql> SELECT COS(8);
+----------------------+
| COS(8) |
+----------------------+
| -0.14550003380861354 |
+----------------------+
1 row in set (0.00 sec)
COT(X)
此函数返回 X 的余切。
mysql> SELECT COT(8);
+---------------------+
| COT(8) |
+---------------------+
| -0.1470650639494805 |
+---------------------+
1 row in set (0.00 sec)
DEGREES(X)
此函数返回从弧度转换为度数的 X 值。
mysql> SELECT DEGREES(180);
+--------------------+
| DEGREES(180) |
+--------------------+
| 10313.240312354817 |
+--------------------+
1 row in set (0.00 sec)
EXP(X)
此函数返回 e 的值(自然对数的底数)的 X 次幂。
mysql> SELECT EXP(30);
+--------------------+
| EXP(30) |
+--------------------+
| 10686474581524.463 |
+--------------------+
1 row in set (0.00 sec)
FLOOR(X)
此函数返回不大于 X 的最大整数值。
mysql> SELECT FLOOR(22.3);
+-------------+
| FLOOR(22.3) |
+-------------+
| 22 |
+-------------+
1 row in set (0.06 sec)
GREATEST(n1,n2,n3,..........)
GREATEST() 函数返回输入参数组(n1、n2、n3 等)中的最大值。以下示例使用 GREATEST() 函数返回一组数值中的最大数
mysql >SELECT GREATEST(3,5,1,8,33,99,34,55,67,43);
+---------------------------------------------------------+
| GREATEST(3,5,1,8,33,99,34,55,67,43) |
+---------------------------------------------------------+
| 99 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LEAST(N1,N2,N3,N4,......)
LEAST() 函数与 GREATEST() 函数相反。其目的是从值列表(N1、N2、N3 等)中返回值最小的项。以下示例显示了 LEAST() 函数的正确用法和输出
mysql >SELECT LEAST(3,5,1,8,33,99,34,55,67,43);
+---------------------------------------------------------+
| LEAST(3,5,1,8,33,99,34,55,67,43) |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LOG(X) / LOG(B,X)
该函数的单参数版本将返回 X 的自然对数。如果使用两个参数调用它,它将返回任意基数 B 的 X 的对数。
mysql >SELECT LOG(45);
+---------------------------------------------------------+
| LOG(45) |
+---------------------------------------------------------+
| 1.65321251377534 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql >SELECT LOG(2,65536);
+---------------------------------------------------------+
| LOG(2,65536) |
+---------------------------------------------------------+
| 16.000000 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MOD(N,M)
此函数返回 N 除以 M 的余数。
mysql >SELECT MOD(29,3);
+---------------------------------------------------------+
| MOD(29,3) |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
PI()
此函数仅返回 pi 的值。SQL 在内部存储 pi 的完整双精度值。
mysql >SELECT PI();
+---------------------------------------------------------+
| PI() |
+---------------------------------------------------------+
| 3.141593 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
POW(X,Y) / POWER(X,Y)
这两个函数返回 X 的 Y 次幂值。
mysql > SELECT POWER(3,3);
+---------------------------------------------------------+
| POWER(3,3) |
+---------------------------------------------------------+
| 27 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
RADIANS(X)
此函数返回 X 的值,从度数转换为弧度。
mysql >SELECT RADIANS(90);
+---------------------------------------------------------+
| RADIANS(90) |
+---------------------------------------------------------+
|1.570796 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ROUND(X) / ROUND(X,D)
此函数返回 X 舍入到最接近的整数。如果提供了第二个参数 D,则该函数返回 X 舍入到 D 位小数。D 必须为正数,否则小数点右侧的所有数字都将被删除。
mysql >SELECT ROUND(5.693893);
+---------------------------------------------------------+
| ROUND(5.693893) |
+---------------------------------------------------------+
| 6 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql >SELECT ROUND(5.693893,2);
+---------------------------------------------------------+
| ROUND(5.693893,2) |
+---------------------------------------------------------+
| 5.69 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SIGN(X)
此函数将 X 的符号(负、零或正)返回为 -1、0 或 1。
mysql >SELECT SIGN(-4.65);
+---------------------------------------------------------+
| SIGN(-4.65) |
+---------------------------------------------------------+
| -1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql >SELECT SIGN(0);
+---------------------------------------------------------+
| SIGN(0) |
+---------------------------------------------------------+
| 0 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql >SELECT SIGN(4.65);
+---------------------------------------------------------+
| SIGN(4.65) |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SIN(X)
此函数返回 X 的正弦值。
mysql >SELECT SIN(90);
+---------------------------------------------------------+
| SIN(90) |
+---------------------------------------------------------+
| 0.893997 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SQRT(X)
此函数返回 X 的非负平方根。
mysql >SELECT SQRT(49);
+---------------------------------------------------------+
| SQRT(49) |
+---------------------------------------------------------+
| 7 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TAN(X)
此函数返回参数 X 的正切值,以弧度表示。
mysql >SELECT TAN(45);
+---------------------------------------------------------+
| TAN(45) |
+---------------------------------------------------------+
| 1.619775 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CRC32(X)
MySQL 提供了一组函数来执行各种数值函数。该CRC32()函数计算的循环冗余校验值,并将其作为32位无符号值。
mysql> SELECT CRC32('Test abc 123 **');
+--------------------------+
| CRC32('Test abc 123 **') |
+--------------------------+
| 3658167795 |
+--------------------------+
1 row in set (0.00 sec)