【MySQL】数学函数

163 阅读5分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情

目录

0E795FFD.gif 今天阿文介绍的内容为:

  • 随机数函数RAND()
  • 取整函数ROUND(),TRUNCATE()
  • 对数函数、指数函数、三角函数、反三角函数

1.获取随机数的函数RAND()和RAND(X)

RAND(x)返回一个随机浮点值v,范围在0到1之间(0 ≤ v ≤1.0)。若已指定一个整数参数x,则它被用作种子值,用来产生重复序列。

例如:

SELECT RAND(),RAND(),RAND();

输出结果为:

image.png 分别返回3个不同的数字,所以不带参数的RAND()每次产生的随机数值是不同的。

例如:

SELECT RAND(10),RAND(10),RAND(10);

输出结果为:

image.png 三个函数都返回0.6570515219653505,所以当RAND(x)的参数相同时,将产生相同的随机数,不同的x产生的随机数值不同。

2.函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)

2.1ROUND(x)返回最接近于参数x的整数,对x值进行四舍五入。

例如:

SELECT ROUND(-1.14),ROUND(-1.67),ROUND(1.14),ROUND(1.66);

输出结果为:

image.png 分别返回-1、-2、1和2,所以四舍五入处理之后,只保留了各个值的整数部分。

2.2ROUND(x,y)返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。

例如:

SELECT ROUND(1.38,1),ROUND(1.38,0),ROUND(232.38,-1),ROUND(232.38,-2);

输出结果为:

image.png 分别返回1.4、1、230和200,因为ROUND(1.38, 1)保留小数点后面1位,四舍五入的结果为1.4;ROUND(1.38, 0)保留小数点后面0位,即返回四舍五入后的整数值; ROUND(23.38, -1)和ROUND (232.38,-2)分别保留小数点左边1位和2位。

提示: y值为负数时,保留的小数点左边的相应位数直接保存为0,不进行四舍五入。

2.3TRUNCATE(x,y)返回被舍去至小数点后y位的数字x。

若y的值为0,则结果不带有小数点或不带有小数部分。若y设为负数,则截去(归零)x小数点左起第y位开始后面所有低位的值。

例如:

SELECT TRUNCATE(1.31,1),TRUNCATE(1.99,1),TRUNCATE(1.99,0),TRUNCATE(19.99,-1);

输出结果为:

image.png 分别返回1.3、1.9、1和10,TRUNCATE(1.31,1)和TRUNCATE(1.99,1)都保留小数点后1位数字,返回值分别为1.3和1.9;TRUNCATE(1.99,0)返回整数部分值1;TRUNCATE(19.99,-1)截去小数点左边第1位后面的值,并将整数部分的1位数字置0,结果为10。

提示: ROUND(x,y)函数在截取值的时候会四舍五入,而TRUNCATE (x,y)直接截取值,并不进行四舍五入。

3.符号函数SIGN(x)

SIGN(x)返回参数的符号,x的值为负、零或正时返回结果依次为-1、0或1。

例如:

SELECT SIGN(-21),SIGN(0),SIGN(21);

输出结果为:

image.png SIGN(-21)返回-1;SIGN(0)返回0;SIGN(21)返回1。

4.幂运算函数POW(x,y)、POWER(x,y)和EXP(x)

4.1POW(x,y)或者POWER(x,y)函数返回x的y次乘方的结果值。

例如:

SELECT POW(2,2),POWER(2,2),POW(2,-2),POWER(2,-2);

输出结果为:

image.png 分别返回4、4、0.25和0.25,所以POW和POWER的结果是相同的,POW(2,2)和POWER(2,2)返回2的2次方,结果都是4;POW(2,-2)和POWER(2,-2)都返回2的-2次方,结果为4的倒数,即0.25。

4.2EXP(x)返回e的x乘方后的值。

例如:

SELECT EXP(3),EXP(-3),EXP(0);

输出结果为:

image.png 分别返回20.085536923187668、0.。049787068367863944和1 ,因为EXP(3)返回以e为底的3次方,结果为20.085536923187668;EXP(-3)返回以e为底的-3次方,结果为0.049787068367863944;EXP(0)返回以e为底的0次方,结果为1。

5.对数运算函数LOG(x)和LOG10(x)

LOG(x)返回x的自然对数,x相对于基数e的对数;LOG10(x)返回x的基数为10的对数。

例如:

SELECT LOG(3),LOG(-3),LOG10(100),LOG10(-100);

输出结果为:

image.png 分别返回1.0986122886681098、NULL、2和NULL,对数定义域不能为负数,因此LOG(-3)和LOG10(-100)返回结果为NULL。

6.角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)

6.1RADIANS(x)将参数x由角度转化为弧度

例如:

SELECT RADIANS(90),RADIANS(180);

输出结果为:

image.png 分别返回1.5707963267948966和3.141592653589793

6.2DEGREES(x)将参数x由弧度转化为角度。

例如:

SELECT DEGREES(PI()),DEGREES(PI()/2);

输出结果为:

image.png 分别返回180和90

7.正弦函数SIN(x)和反正弦函数ASIN(x)

7.1SIN(x)返回x正弦,其中x为弧度值。

例如:

SELECT SIN(1),ROUND(SIN(PI()));

输出结果为:

image.png 分别返回0.8414709848078965和0,如果不使用ROUND()函数则结果会是1.2246467991473532e-16,就会产生误差。

7.2ASIN(x)返回x的反正弦,即正弦为x的值。若x不在-1到1的范围之内,则返回NULL

例如:

SELECT ASIN(0.8414709848078965),ASIN(3);

输出结果为:

image.png 分别返回1和NULL,ASIN(3)中的参数3超出了正弦值的范围,因此返回NULL。

8.余弦函数COS(x)和反余弦函数ACOS(x)

8.1COS(x)返回x的余弦,其中x为弧度值

例如:

SELECT COS(0),COS(PI()),COS(1);

输出结果为:

image.png 分别返回1、-1和0.5403023058681398。

8.2ACOS(x)返回x的反余弦,即余弦是x的值。若x不在-1~1的范围之内,则返回NULL

例如:

SELECT ACOS(1),ACOS(0),ROUND(ACOS(0.5403023058681398)), ACOS(2);

image.png 分别返回0、1.5707963267948966、1和NULL。

9.正切函数、反正切函数和余切函数

9.1TAN(x)返回x的正切,其中x为给定的弧度值。

例如:

SELECT TAN(0.3),ROUND(TAN(PI()/4));

输出结果为:

image.png 分别返回0.30933624960962325和1。

9.2ATAN(x)返回x的反正切,即正切为x的值

例如:

SELECT ATAN(0.30933624960962325),ATAN(1);

输出结果为:

image.png 分别返回0.3和0.7853981633974483。

9.3COT(x)返回x的余切

例如:

SELECT COT(0.3),1/TAN(0.3),ROUND(COT(PI()/4));

输出结果为:

image.png 分别返回:3.2327281437658275、3.2327281437658275和1.0000000000000002,由结果可以看到,函数COT和TAN互为倒函数

总结

  • 随机数函数如果参数相同,返回的随机数也相同
  • ROUND()函数会四舍五入,而TRUNCATE()函数直接截取
  • 使用三角函数时,需和ROUND函数一起使用,不然有时候会产生误差

好了,今天阿文就介绍到这里了...

goodbye

0E791D08.png