Mysql 专题
专题目录
您的位置:database > Mysql专题 > MySQL 数学函数
MySQL 数学函数
作者:--    发布时间:2019-11-20

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 的形式被存储的。
网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册