Mysql常用函数之数值函数

MySQL 数值函数

函数名称 函数说明
ABS() 返回数值表达式的绝对值
ACOS() 返回数值表达式的反余弦值。如果参数未在[-1, 1]区间内,则返回 NULL
ASIN() 返回数值表达式的反正弦值。如果参数未在[-1, 1]区间内,则返回 NULL
ATAN() 返回数值表达式的反正切值
ATAN2() 返回两个参数的反正切值
BIT_AND() 返回表达式参数中的所有二进制位的按位与运算结果
BIT_COUNT() 返回传入的二进制值的字符串形式
BIT_OR() 返回表达式参数中的所有二进制位的按位或运算结果
CEIL() 返回值为不小于传入数值表达式的最小整数值
CEILING() CEIL()返回值为不小于传入数值表达式的最小整数值
CONV() 转换数值表达式的进制
COS() 返回所传入数值表达式(以弧度计)的余弦值
COT() 返回所传入数值表达式的余切值
DEGREES() 将数值表达式参数从弧度值转变为角度值
EXP() 返回以e(自然对数的底数)为底,以所传入的数值表达式为指数的幂
FLOOR() 返回不大于所传入数值表达式的最大整数
FORMAT() 将数值表达式参数四舍五入到一定的小数位
GREATEST() 返回传入参数的最大值
INTERVAL() 比较所传入的多个表达式:expr1expr2expr3……,如果 expr1 < expr2,则返回0;如果 expr1 < expr3,则返回1……以此类推
LEAST() 返回传入参数中的最小值
LOG() 返回传入数值表达式的自然对数
LOG10() 返回传入数值表达式的常用对数(以10为底的对数)
MOD() 返回参数相除的余数
OCT() 返回传入数值表达式的八进制数值的字符串表现形式。如果传入值为 NULL,则返回 NULL
PI() 返回 π 值
POW() 返回两个参数的幂运算结果,其中一个参数为底,另一个参数为它的指数。
POWER() 返回两个参数的幂运算结果,其中一个参数为底,另一个参数为它的指数。
RADIANS() 将参数由角度值转换成弧度值
ROUND() 将所传入数值表达式四舍五入为整数。也可以用来将参数四舍五入到一定的小数位
SIN() 返回参数(以弧度计)的正弦值
SQRT() 返回参数的非负平方根
STD() 返回参数的标准方差值
STDDEV() 返回参数的标准方差值
TAN() 返回参数(以弧度计)的正切值
TRUNCATE() 将数值参数 expr1 的小数位截取到 expr2 位如果 expr2 为0,则结果没有小数位。

ABS(X)

返回参数 X 的绝对值。如下例所示:

mysql> SELECT ABS(2);
+---------------------------------------------------------+
| ABS(2)                                                  |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT ABS(-2);
+---------------------------------------------------------+
| ABS(2)                                                  |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

ACOS(X)

返回参数 X 的反余弦值。参数 X 的取值区间为 [-1, 1],如果不在该区间内,则返回 NULL 值。实例如下:

mysql> SELECT ACOS(1);
+---------------------------------------------------------+
| ACOS(1)                                                 |
+---------------------------------------------------------+
| 0.000000                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

ASIN(X)

返回参数 X 的反正弦值。参数 X 的取值区间为 [-1, 1],如果不在该区间内,则返回 NULL 值。实例如下:

mysql> SELECT ASIN(1);
+---------------------------------------------------------+
| ASIN(1)                                                 |
+---------------------------------------------------------+
| 1.5707963267949                                         |
+---------------------------------------------------------+
1 row in set (0.00 sec)

ATAN(X)

返回参数 X 的反正切值。

mysql> SELECT ATAN(1);
+---------------------------------------------------------+
| ATAN(1)                                                 |
+---------------------------------------------------------+
| 0.78539816339745                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

ATAN2(Y,X)

返回两个参数 XY 的反正切值,类似于 Y/X 的反正切值,但两个参数的符号是用来确定所得结果的象限的。

mysql> SELECT ATAN2(3,6);
+---------------------------------------------------------+
| ATAN2(3,6)                                              |
+---------------------------------------------------------+
| 0.46364760900081                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

BIT_AND(expression)

返回表达式参数 expression 中的所有二进制位的按位与运算结果。按位与 运算的规则是这样的:如果两个同等位都是同样值(0或1),则返回1,否则返回0。函数本身返回的是一个64位的整形值,如果没有匹配项,则返回 18446744073709551615。在下面的示例中,对表 CARS 按照Maker 字段进行分组, 然后再对 PRICE(价格)字段执行 BIT_AND() 函数。

mysql> SELECT 
          MAKER, BIT_AND(PRICE) BITS
          FROM CARS GROUP BY MAKER
+---------------------------------------------------------+
|MAKER           BITS                                     |
+---------------------------------------------------------+
|CHRYSLER        512                                      |
|FORD            12488                                    |
|HONDA           2144                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

BIT_COUNT(numeric_value)

该函数会将参数 numeric_value 转化成二进制数,然后再返回这个二进制数中1的个数。下例展示了如何对一些数使用BIT_COUNT() 函数。

mysql> SELECT
          BIT_COUNT(2) AS TWO,
          BIT_COUNT(4) AS FOUR,
          BIT_COUNT(7) AS SEVEN
+-----+------+-------+
| TWO | FOUR | SEVEN |
+-----+------+-------+
|   1 |    1 |     3 |
+-----+------+-------+
1 row in set (0.00 sec)

BIT_OR(expression)

按位或运算函数。返回表达式参数 expression 中所有位的按位或运算结果。其中的基本原理是:如果相对应的位匹配(就是相同的意思,同为0或1),则返回0,否则返回1。函数本身返回的是一个64位的 整形数值,如果记录并不匹配,则返回0。下例将对对 CARS 表按照 Maker 分组,然后对 PRICE 字段执行 BIT_OR() 函数。

mysql> SELECT 
          MAKER, BIT_OR(PRICE) BITS
          FROM CARS GROUP BY MAKER
+---------------------------------------------------------+
|MAKER           BITS                                     |
+---------------------------------------------------------+
|CHRYSLER        62293                                    |
|FORD            16127                                    |
|HONDA           32766                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CEIL(X) 与 CEILING(X)

返回不小于 X 的最小整型值。示例如下:

mysql> SELECT CEILING(3.46);
+---------------------------------------------------------+
| CEILING(3.46)                                           |
+---------------------------------------------------------+
| 4                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CEIL(-6.43);
+---------------------------------------------------------+
| CEIL(-6.43)                                             |
+---------------------------------------------------------+
| -6                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CONV(N,from_base,to_base)

该函数用于在不同进制间转换数值。将数值 N 从 初始进制参数 from_base 转换为目标进制参数 to_base,然后以字符串的形式返回。该函数可使用的进制范围为2-36。如果函数参数中有一个为 NULL 值,则函数返回 NULL。下例中,将16进制数5转换为了2进制数101。

mysql> SELECT CONV(5,16,2);
+---------------------------------------------------------+
| CONV(5,16,2)                                            |
+---------------------------------------------------------+
| 101                                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

COS(X)

以弧度值形式返回 X 的余弦值。示例如下:

mysql>SELECT COS(90);
+---------------------------------------------------------+
| COS(90)                                                 |
+---------------------------------------------------------+
| -0.44807361612917                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

COT(X)

返回 X 的余切值。示例如下:

mysql>SELECT COT(1);
+---------------------------------------------------------+
| COT(1)                                                  |
+---------------------------------------------------------+
| 0.64209261593433                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DEGREES(X)

X 从弧度值转换为角度值。示例如下:

mysql>SELECT DEGREES(PI());
+---------------------------------------------------------+
| DEGREES(PI())                                           |
+---------------------------------------------------------+
| 180.000000                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

EXP(X)

返回 e(自然对数的底数)的 X 次幂。示例如下:

mysql>SELECT EXP(3);
+---------------------------------------------------------+
| EXP(3)                                                  |
+---------------------------------------------------------+
| 20.085537                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

FLOOR(X)

返回不大于 X 的最大整形数值。

mysql>SELECT FLOOR(7.55);
+---------------------------------------------------------+
| FLOOR(7.55)                                             |
+---------------------------------------------------------+
| 7                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

FORMAT(X,D)

将数值 X 以下列格式进行格式化:###,###,###.##,并将小数位缩减到 D 位。示例如下:

mysql>SELECT FORMAT(423423234.65434453,2);
+---------------------------------------------------------+
| FORMAT(423423234.65434453,2)                            |
+---------------------------------------------------------+
| 423,423,234.65                                          |
+---------------------------------------------------------+
1 row in set (0.00 sec)

GREATEST(n1,n2,n3,……….)

返回 n1n2n3等一系列参数中的最大值。示例如下:

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)

INTERVAL(N,N1,N2,N3,……….)

将第一个参数 N 与后续的一列参数 N1N2N3 等一一进行比对。返回结果规则为:如果N < N1,返回0;如果 N < N2,则返回1;如果N < N3则返回2……以此类推。如果N为NULL,则返回-1。参数列表 N1N2N3……必须满足N1 < N2 < N3……才能正常执行本函数。示例如下:

mysql>SELECT INTERVAL(6,1,2,3,4,5,6,7,8,9,10);
+---------------------------------------------------------+
| INTERVAL(6,1,2,3,4,5,6,7,8,9,10)                        |
+---------------------------------------------------------+
| 6                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

注意,6是在后续参数列表中,第一个大于 N 的值所对应的索引(参数列表的初始索引为0)。所以,在我们这个例子中,7正是这个大于 N 的值,它的索引却是6。

LEAST(N1,N2,N3,N4,……)

该函数是 GREATEST() 函数的逆向函数,返回 N1、N2、N3、N4 等值的最小值。示例如下:

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 版本的函数返回 X 的自然对数。双参数版本的函数将返回以 B 为底 X 的对数。示例如下:

mysql>SELECT LOG(45);
+---------------------------------------------------------+
| LOG(45)                                                 |
+---------------------------------------------------------+
| 3.806662                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql>SELECT LOG(2,65536);
+---------------------------------------------------------+
| LOG(2,65536)                                            |
+---------------------------------------------------------+
| 16.000000                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LOG10(X)

返回以10为底的 X 的对数(即常用对数lg)。

mysql>SELECT LOG10(100);
+---------------------------------------------------------+
| LOG10(100)                                              |
+---------------------------------------------------------+
| 2.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)

OCT(N)

以字符串形式返回八进制数 N,作用相当于 CONV(N,10,8)。示例如下:

mysql>SELECT OCT(12);
+---------------------------------------------------------+
| OCT(12)                                                 |
+---------------------------------------------------------+
| 14                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

PI()

返回 π 值。MySQL 所存储的 π 值为双精度浮点值。

mysql>SELECT PI();
+---------------------------------------------------------+
| PI()                                                    |
+---------------------------------------------------------+
| 3.141593                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

POW(X,Y) 与POWER(X,Y)

这两个函数都能返回 XY 次幂。示例如下:

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 四舍五入,返回最接近 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 的符号(表明 X 究竟是负数、0还是正数的符号):-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)

STD(expression) 与 STDDEV(expression)

返回表达式 expression 的标准偏差值。等于取 VARIANCE(expression) 的平方根。以下范例计算 CARS 表中 PRICE 列的标准偏差。

mysql>SELECT STD(PRICE) STD_DEVIATION FROM CARS;
+---------------------------------------------------------+
| STD_DEVIATION                                           |
+---------------------------------------------------------+
| 7650.2146                                               |
+---------------------------------------------------------+
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)

TRUNCATE(X,D)

X 值的小数位被截取到 D 位。如果 D 为0,则 X 无小数位。如果 D 为负值,则将把 X 整数部分末位 D 位数值清除为0。以上运算均为清除,非四舍五入。示例如下:

mysql>SELECT TRUNCATE(7.536432,2);
+---------------------------------------------------------+
| TRUNCATE(7.536432,2)                                    |
+---------------------------------------------------------+
| 7.53                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

 

 

更多参考:

MySQL 超新手入门教程系列

MySQL: 常用运算符

Mysql: concat函数实现数据库字段合并查询

Mysql常用函数之字符串函数

Mysql常用函数之日期时间函数

Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别

PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)

Ubuntu 16.04 安装 LAMP Install Apache, MySQL, PHP (LAMP) stack on Ubuntu 16.04

命令行导出和导入数据库 How to export and import MySQL database using command line Interface

推荐轻量级MySQL数据库管理工具 Adminer

 

本文: Mysql常用函数之数值函数

Leave a Reply