MySQL 数学函数

所有的数学函数在发生错误的情况下,均返回 NULL

-元减。改变参数的符号
mysql> SELECT - 2; -> -2

注意,如果这个操作符被用于一个 BIGINT,返回值也是一个 BIGINT!这就意味着,应该避免在一个可能有值-2^63 的整数上使用 - 操作符!

ABS(X)返回 X 的绝对值:
mysql> SELECT ABS(2); -> 2 mysql> SELECT ABS(-32); -> 32

这个函数可安全地使用于 BIGINT 值。

SIGN(X)以 -10 或 1 方式返回参数的符号,它取决于参数 X 是负数、0 或正数。
mysql> SELECT SIGN(-32); -> -1 mysql> SELECT SIGN(0); -> 0 mysql> SELECT SIGN(234); -> 1
MOD(N,M)% 取模 (就如 C 中的 % 操作符)。返回 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 值。最后一个示例可在 MySQL 4.1 中工作。

FLOOR(X)返回不大于 X 的最大整数值:
mysql> SELECT FLOOR(1.23); -> 1 mysql> SELECT FLOOR(-1.23); -> -2

注意,返回值被转换为一个 BIGINT

CEILING(X)返回不小于 X 的最小整数:
mysql> SELECT CEILING(1.23); -> 2 mysql> SELECT CEILING(-1.23); -> -1

注意,返回值被转换为一个 BIGINT

ROUND(X)
ROUND(X,D)将参数 X 四舍五入到最近的整数,然后返回。两个参数的形式是将一个数字四舍五入到 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

注意,当参数在两个整数之间时, ROUND() 的行为取决于 C 库的实现。某些取整到最近的偶数,总是向下取,总是向上取,也可能总是接近于零。如果你需要某种取整类型,应该使用一个明确定义的函数比如 TRUNCATE() 或 FLOOR() 代替。

DIV整除。类似于 FLOOR(),但是它可安全地用于 BIGINT 值。
mysql> SELECT 5 DIV 2 -> 2

DIV 在 MySQL 4.1.0 中新加入。

EXP(X)返回值 e (自然对数的底) 的 X 次方:
mysql> SELECT EXP(2); -> 7.389056 mysql> SELECT EXP(-2); -> 0.135335
LN(X)返回 X 的自然对数:
mysql> SELECT LN(2); -> 0.693147 mysql> SELECT LN(-2); -> NULL

这个函数在 MySQL 4.0.3 被新加入。在 MySQL 中,它是 LOG(X) 的同义词。

LOG(X)
LOG(B,X)如果以一个参数调用,它返回 X 的自然对数:
mysql> SELECT LOG(2); -> 0.693147 mysql> SELECT LOG(-2); -> NULL

如果以两个参数调用,这个函数返回 X 任意底 B 的对数:

mysql> SELECT LOG(2,65536); -> 16.000000 mysql> SELECT LOG(1,100); -> NULL

任意底选项在 MySQL 4.0.3 中被加入。LOG(B,X) 等价于 LOG(X)/LOG(B)

LOG2(X)返回 X 的以 2 为底的对数:
mysql> SELECT LOG2(65536); -> 16.000000 mysql> SELECT LOG2(-100); -> NULL

LOG2() 通常可以用于计数出一个数字需要多少个比特位用于存储它。这个函数在 MySQL 4.0.3 中被添加。在更早的版本中,可以使用 LOG(X)/LOG(2) 来代替它。

LOG10(X)返回 X 以 10 为底的对数:
mysql> SELECT LOG10(2); -> 0.301030 mysql> SELECT LOG10(100); -> 2.000000 mysql> SELECT LOG10(-100); -> NULL
POW(X,Y)
POWER(X,Y)返回 X 的 Y 幂:
mysql> SELECT POW(2,2); -> 4.000000 mysql> SELECT POW(2,-2); -> 0.250000
SQRT(X)返回 X 的非否平方根:
mysql> SELECT SQRT(4); -> 2.000000 mysql> SELECT SQRT(20); -> 4.472136
PI()返回 PI 值(圆周率)。缺少显示 5 位小数,但是在 MySQL 内部,为 PI 使用全部的双精度。
mysql> SELECT PI(); -> 3.141593 mysql> SELECT PI()+0.000000000000000000; -> 3.141592653589793116
COS(X)返回 X 的余弦,在这里,X 以弧度给出:
mysql> SELECT COS(PI()); -> -1.000000
SIN(X)返回 X 的正弦,在这里,X 以弧度给出:
mysql> SELECT SIN(PI()); -> 0.000000
TAN(X)返回 X 的正切,在这里,X 以弧度给出:
mysql> SELECT TAN(PI()+1); -> 1.557408
ACOS(X)返回 X 的反余弦,更确切地说,返回余弦值为 X 的值。如果 X 不在 -1 到 1 之间的范围内,返回 NULL
mysql> SELECT ACOS(1); -> 0.000000 mysql> SELECT ACOS(1.0001); -> NULL mysql> SELECT ACOS(0); -> 1.570796
ASIN(X)返回 X 的反正弦,更确切地说,返回正弦值为 X 的值。如果 X 不在 -1 到 1 之间的范围内,返回 NULL
mysql> SELECT ASIN(0.2); -> 0.201358 mysql> SELECT ASIN('foo'); -> 0.000000
ATAN(X)返回 X 的反正切,更确切地说,返回正切值为 X 的值:
mysql> SELECT ATAN(2); -> 1.107149 mysql> SELECT ATAN(-2); -> -1.107149
ATAN(Y,X)
ATAN2(Y,X)返回两个变量 X 和 Y 的反正切。它类似于计算 Y / X 的反正切,除了两个参数的符号用于决定结果的象限:
mysql> SELECT ATAN(-2,2); -> -0.785398 mysql> SELECT ATAN2(PI(),0); -> 1.570796
COT(X)返回 X 的余切:
mysql> SELECT COT(12); -> -1.57267341 mysql> SELECT COT(0); -> NULL
RAND()
RAND(N)返回一个范围在 0 到 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

在一个 ORDER BY 子句中,不可以使用 RAND() 值使用一个列,因为 ORDER BY 将多次重复计算列。从 MySQL 3.23 开始,你可以使用:SELECT * FROM table_name ORDER BY RAND(),这有利于得到一个来自 SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000 的集合中的随机样本。 注意,在一个 WHERE 子句中的 RAND() 将在每次 WHERE 执行时被重新计算。 RAND() 并不是预期完美的随机数发生器,但是可以代替做为产生特别的随机数一个快速的方法,这样便于在两个不同平台下的同一 MySQL 版本间移动。

LEAST(X,Y,...)
有两个或更多个参数,返回最小(最小值)的参数。参数使用下列规则进行比较:

  • 如果返回值用于一个 INTEGER 语境,或所有的参数是整数值,它们作为整数比较。
  • 如果返回值用于一个 REAL 语境,或所有的参数均是实数值,它们作为实数被比较。
  • 如果任何一个参数是字母大小写敏感的,参数作为大小写敏感的字符串进行比较。
  • 在其它情况下,参数做为忽略大小写的字符中进行比较:
mysql> SELECT LEAST(2,0); -> 0 mysql> SELECT LEAST(34.0,3.0,5.0,767.0); -> 3.0 mysql> SELECT LEAST("B","A","C"); -> "A"

在早于 MySQL 3.22.5 的版本中,你可以使用 MIN() 代替 LEAST

GREATEST(X,Y,...)返回最大(最大值)参数。参数使用与 LEAST 一致的规则进行比较:
mysql> SELECT GREATEST(2,0); -> 2 mysql> SELECT GREATEST(34.0,3.0,5.0,767.0); -> 767.0 mysql> SELECT GREATEST("B","A","C"); -> "C"

在早于 MySQL 3.22.5 的版本中,可以使用 MAX() 代替 GREATEST

DEGREES(X)将参数 X 从弧度转换为角度,然后返回:
mysql> SELECT DEGREES(PI()); -> 180.000000
RADIANS(X)将参数 X 从角度转换为弧度,然后返回:
mysql> SELECT RADIANS(90); -> 1.570796
TRUNCATE(X,D)将数值 X 截到 D 个小数,然后返回。如果 D 为 0,结果将不包含小数点和小数部分:
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 3.23.51 开始,所有数字被四舍五入到零。 如果 D 是负数,那么数字的整个部分被对准零位输出:

mysql> SELECT TRUNCATE(122,-2); -> 100

注意,十进值小数在计算机中通常不以精确数字存储,而是双精度型的值,你可能会被下列结果所愚弄:

mysql> SELECT TRUNCATE(10.28*100,0); -> 1027

上面结果的发生是因为 10.28 实际上是以某些像 10.2799999999999999 的形式被存储的。

MySQL 数学函数的更多相关文章

  1. MySQL数学函数简明总结

    1. ABS(x): 返回x的绝对值 mysql> select ABS(1), ABS(-1), ABS(0); +--------+---------+--------+| ABS(1) | ...

  2. MySQL数学函数

    官方文档:Numeric Functions and Operators Name Description ABS() Return the absolute value ACOS() Return ...

  3. MySQL好用的数学函数

    最近项目很忙,分给我的功能都比较复杂,还好能应付的下来.在工作的过程中,我发现使用mysql的自带函数能够极大的减少程序的复杂度.这是必然的,使用mysql的函数,能够在程序里面省却很多的循环遍历.但 ...

  4. MYSQL 常用函数(数学、字符串、日期时间、系统信息、加密)

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...

  5. MySql常用函数数学函数、加密函数等(转—收藏)

        MySql函数众多,这里只是列举了一部分常用的函数.   一.数学函数 ABS(x)                                         // 返回x的绝对值 BI ...

  6. MySQL 进阶4 SQL常见函数: 字符函数/数学函数/日期函数/流程控制函数(if/case)

    # 进阶4 SQL常见函数 分类: 1/单行函数: 字符函数: concat(),length(),ifnull(__,default) ,instr(), trim(),upper(),lower( ...

  7. mysql 函数 时间函数,数学函数,字符串函数,条件判断函数

    =========================================== mysql 相关函数 ============================================= ...

  8. MySql cmd下的学习笔记 —— 有关常用函数的介绍(数学函数,聚合函数等等)

    (一)数学函数 abs(x)              返回x的绝对值 bin(x)               返回x的二进制(oct返回八进制,hex返回十六进制) ceiling(x)      ...

  9. Mysql常用函数,难点,注意

    一.数学函数 ABS(x)   返回x的绝对值 BIN(x)   返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x)   返回大于x的最小整数值 EXP(x)   返回值e( ...

随机推荐

  1. spark2.1:使用df.select(when(a===b,1).otherwise(0))替换(case when a==b then 1 else 0 end)

    最近工作中把一些sql.sh脚本执行hive的语句升级为spark2.1版本,其中遇到将case when 替换为scala操作df的方式实现的问题: 代码数据: scala> import o ...

  2. Spark测试代码

    测试代码: import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.hive.HiveContext ...

  3. STM32-正弦波可调(50HZ~20KHZ可调、峰峰值0~3.3V可调)

    1.原理: 通过定时器每隔一段时间触发一次DAC转换,然后通过DMA发送正玄波码表值给DAC. 当需要改变频率HZ时,只需要修改定时器频率即可(最高只能达到20KHz) 当需要改变正玄波的正峰峰值/负 ...

  4. Spring Cloud学习笔记-001

    Spring Boot快速入门 1. Eclipse新建maven工程,骨架选择quickstart: 2. 加入springboot的父工程,和web依赖: 3. 编写一个简单的RESTful接口, ...

  5. 0415关于通过FILEBEAT,LOGSTASH,ES,KIBNA实现数据的采集

    如何通过FILEBEAT,LOGSTASH,ES,KIBNA实现数据的采集总体参考网址:https://www.olinux.org.cn/elk/1157.html官方网址:https://www. ...

  6. Swing图层的应用——实现tooltip显示

    没有错是世纪前的swing. 在使用Swing的时候有个问题一直没有解决,就是Swing自带的tooltip不会跟随鼠标进行移动,而且移动到边界就会遮挡的问题.JCompoent有个createToo ...

  7. 深入解析浏览器的幕后工作原理(三) 呈现树和 DOM 树的关系

    呈现树和 DOM 树的关系 呈现器是和 DOM 元素相对应的,但并非一一对应.非可视化的 DOM 元素不会插入呈现树中,例如"head"元素.如果元素的 display 属性值为& ...

  8. ASP.NET MVC 中 View 的设计

    1. 前言  感觉有好长时间没有接触View 了,周末闲来无事,翻翻书桌上的书来回顾回顾ASP.NET MVC中View的相关内容. 2. View概述  View 通过应用程序在Action 中返回 ...

  9. bzoj 2564 集合的面积

    Description 对于一个平面上点的集合P={(xi,yi )},定义集合P的面积F(P)为点集P的凸包的面积. 对于两个点集A和B,定义集合的和为: A+B={(xiA+xjB,yiA+yjB ...

  10. hdu 5493 (树状数组)

    题意:在一个队列中,你知道一个人在他左边或者右边比他高的人的个数,求字典序最小的答案 思路:先将人按  矮-->高 排序,然后算出在每个人前面需要预留的位置.树状数组(也可以线段树)解决时,先二 ...