数学函数

函数名称 函数说明
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() 比较所传入的多个表达式:expr1、expr2、expr3……,如果 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,则结果没有小数位。

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)

返回两个参数 X 与 Y 的反正切值,类似于 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,..........)

返回 n1、n2、n3等一系列参数中的最大值。示例如下:

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 与后续的一列参数 N1、N2、N3 等一一进行比对。返回结果规则为:如果N < N1,返回0;如果 N < N2,则返回1;如果N < N3则返回2……以此类推。如果N为NULL,则返回-1。参数列表 N1、N2、N3……必须满足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)

这两个函数都能返回 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 四舍五入,返回最接近 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)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容