购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 数学函数

数学函数主要用来处理数值数据,数学函数主要有绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。在产生错误时,数学函数将会返回空值NULL。本节将介绍各种数学函数的作用和用法。

4.2.1 绝对值函数ABS(x)和返回圆周率的函数PI()

ABS(X)返回X的绝对值。

【例4.1】求2、-3.3和-33的绝对值,输入语句如下:

     mysql>SELECT ABS(2), ABS(-3.3), ABS(-33);
     +--------+-----------+----------+
     | ABS(2) | ABS(-3.3) | ABS(-33) |
     +--------+-----------+----------+
     |     2  |     3.3   |     33   |
     +--------+-----------+----------+

正数的绝对值为其本身,2的绝对值为2;负数的绝对值为其相反数,-3.3的绝对值为3.3;-33的绝对值为33。

PI()返回圆周率π的值。默认显示小数位数是6位。

【例4.2】返回圆周率值,输入语句如下:

     mysql> SELECT pi();
     +----------+
     | pi()     |
     +----------+
     | 3.141593 |
     +----------+

返回结果保留了7位有效数字。

4.2.2 平方根函数SQRT(x)和求余函数MOD(x,y)

SQRT(x)返回非负数x的二次平方根。

【例4.3】求9、40和-49的二次平方根,输入语句如下:

     mysql> SELECT SQRT(9), SQRT(40), SQRT(-49);
     +---------+-------------------+-----------+
     | SQRT(9) | SQRT(40)         | SQRT(-49) |
     +---------+-------------------+-----------+
     |     3   | 6.324555320336759 |     NULL  |
     +---------+-------------------+-----------+

3的平方等于9,因此9的二次平方根为3;40的平方根为6.324555320336759;负数没有平方根,因此-49的平方根返回的结果为NULL。

MOD(x,y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,它返回除法运算后的精确余数。

【例4.4】对(31,8)、(234, 10)、(45.5,6)进行求余运算,输入语句如下:

     mysql> SELECT MOD(31,8),MOD(234, 10),MOD(45.5,6);
     +-----------+--------------+-------------+
     | MOD(31,8) | MOD(234, 10) | MOD(45.5,6) |
     +-----------+--------------+-------------+
     |      7   |        4    |      3.5   |
     +-----------+--------------+-------------+

4.2.3 获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x)

CEIL(x)和CEILING(x)的意义相同,返回不小于x的最小整数值,返回值转化为一个BIGINT。

【例4.5】使用CEILING函数返回最小整数,输入语句如下:

     mysql> SELECT  CEIL(-3.35),CEILING(3.35);
     +-------------+---------------+
     | CEIL(-3.35) | CEILING(3.35) |
     +-------------+---------------+
     |       -3   |         4    |
     +-------------+---------------+

-3.35为负数,不小于-3.35的最小整数为-3,因此返回值为-3;不小于3.35的最小整数为4,因此返回值为4。

FLOOR(x)返回不大于x的最大整数值,返回值转化为一个BIGINT。

【例4.6】使用FLOOR函数返回最大整数,输入语句如下:

     mysql> SELECT FLOOR(-3.35), FLOOR(3.35);
     +--------------+-------------+
     | FLOOR(-3.35) | FLOOR(3.35) |
     +--------------+-------------+
     |        -4   |       3    |
     +--------------+-------------+

-3.35为负数,不大于-3.35的最大整数为-4,因此返回值为-4;不大于3.35的最大整数为3,因此返回值为3。

4.2.4 获取随机数的函数RAND()和RAND(x)

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

【例4.7】使用RAND()函数产生随机数,输入语句如下:

     mysql> SELECT RAND(),RAND(),RAND();
     +--------------------+---------------------+--------------------+
     | RAND()           | RAND()            | RAND()           |
     +--------------------+---------------------+--------------------+
     | 0.1380485446546679 | 0.45428662510056667 | 0.8572875222724746 |
     +--------------------+---------------------+--------------------+

可以看到,不带参数的RAND()每次产生的随机数值是不同的。

【例4.8】使用RAND(x)函数产生随机数,输入语句如下:

     mysql> SELECT RAND(10),RAND(10),RAND(11);
     +--------------------+--------------------+-------------------+
     | RAND(10)          | RAND(10)          | RAND(11)         |
     +--------------------+--------------------+-------------------+
     | 0.6570515219653505 | 0.6570515219653505 | 0.907234631392392 |
     +--------------------+--------------------+-------------------+

可以看到,当RAND(x)的参数相同时,将产生相同的随机数,不同的x产生的随机数值不同。

4.2.5 函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)

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

【例4.9】使用ROUND(x)函数对操作数进行四舍五入,输入语句如下:

     mysql> SELECT ROUND(-1.14),ROUND(-1.67), ROUND(1.14),ROUND(1.66);
     +--------------+--------------+-------------+-------------+
     | ROUND(-1.14) | ROUND(-1.67) | ROUND(1.14) | ROUND(1.66) |
     +--------------+--------------+-------------+-------------+
     |        -1   |       -2    |        1   |       2    |
     +--------------+--------------+-------------+-------------+

可以看到,四舍五入处理之后,只保留了各个值的整数部分。

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

【例4.10】使用ROUND(x,y)函数对操作数x进行四舍五入操作,结果保留小数点后面y位,输入语句如下:

     mysql> SELECT ROUND(1.38, 1), ROUND(1.38, 0), ROUND(232.38, -1), ROUND(232.38,-2);
     +----------------+----------------+-------------------+------------------+
     | ROUND(1.38, 1) | ROUND(1.38, 0) | ROUND(232.38, -1) | ROUND(232.38,-2) |
     +----------------+----------------+-------------------+------------------+
     |        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,不进行四舍五入。

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

【例4.11】使用TRUNCATE(x,y)函数对操作数进行截取操作,结果保留小数点后面指定y位,输入语句如下:

     mysql> SELECT TRUNCATE(1.31,1), TRUNCATE(1.99,1), TRUNCATE(1.99,0), TRUNCATE(19.99,-1);
     +----------------+----------------+----------------+-------------------+
     |TRUNCATE(1.31,1)|TRUNCATE(1.99,1)|TRUNCATE(1.99,0)| TRUNCATE(19.99,-1)|
     +----------------+----------------+----------------+-------------------+
     |          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)直接截取值,并不进行四舍五入。

4.2.6 符号函数SIGN(x)

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

【例4.12】使用SIGN函数返回参数的符号,输入语句如下:

     mysql> SELECT SIGN(-21),SIGN(0), SIGN(21);
     +-----------+---------+----------+
     | SIGN(-21) | SIGN(0) | SIGN(21) |
     +-----------+---------+----------+
     |      -1   |     0   |      1   |
     +-----------+---------+----------+

SIGN(-21)返回-1;SIGN(0)返回0;SIGN(21)返回1。

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

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

【例4.13】使用POW和POWER函数进行乘方运算,输入语句如下:

     mysql> SELECT POW(2,2), POWER(2,2),POW(2,-2), POWER(2,-2);
     +----------+------------+-----------+-------------+
     | POW(2,2) | POWER(2,2) | POW(2,-2) | POWER(2,-2) |
     +----------+------------+-----------+-------------+
     |      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。

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

【例4.14】使用EXP函数计算e的乘方,输入语句如下:

     mysql> SELECT EXP(3),EXP(-3),EXP(0);
     +---------------------------+---------------------------+--------+
     | EXP(3)                 | EXP(-3)                | EXP(0) |
     +---------------------------+---------------------------+--------+
     | 20.085536923187668        | 0.049787068367863944      |    1   |
     +---------------------------+---------------------------+--------+

EXP(3)返回以e为底的3次方,结果为20.085536923187668;EXP(-3)返回以e为底的-3次方,结果为0.049787068367863944;EXP(0)返回以e为底的0次方,结果为1。

4.2.8 对数运算函数LOG(x)和LOG10(x)

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

【例4.15】使用LOG(x)函数计算自然对数,输入语句如下:

     mysql> SELECT LOG(3), LOG(-3);
     +--------------------+---------+
     | LOG(3)           | LOG(-3) |
     +------------?--------+---------+
     | 1.0986122886681098 |    NULL |
     +--------------------+---------+

对数定义域不能为负数,因此LOG(-3)返回结果为NULL。

LOG10(x)返回x的基数为10的对数。

【例4.16】使用LOG10计算以10为基数的对数,输入语句如下:

     mysql> SELECT LOG10(2), LOG10(100), LOG10(-100);
     +--------------------+------------+-------------+
     | LOG10(2)          | LOG10(100) | LOG10(-100) |
     +--------------------+------------+-------------+
     | 0.3010299956639812 |        2   |      NULL   |
     +--------------------+------------+-------------+

10的2次乘方等于100,因此LOG10(100)返回结果为2;LOG10(-100)定义域非负,因此返回NULL。

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

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

【例4.17】使用RADIANS将角度转换为弧度,输入语句如下:

     mysql> SELECT RADIANS(90),RADIANS(180);
     +--------------------+-------------------+
     | RADIANS(90)        | RADIANS(180)      |
     +--------------------+-------------------+
     | 1.5707963267948966 | 3.141592653589793 |
     +--------------------+-------------------+

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

【例4.18】使用DEGREES将弧度转换为角度,输入语句如下:

     mysql> SELECT DEGREES(PI()), DEGREES(PI() / 2);
     +---------------+-------------------+
     | DEGREES(PI()) | DEGREES(PI() / 2) |
     +---------------+-------------------+
     |        180   |          90     |
     +---------------+-------------------+

4.2.10 正弦函数SIN(x)和反正弦函数ASIN(x)

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

【例4.19】使用SIN函数计算正弦值,输入语句如下:

     mysql> SELECT SIN(1), ROUND(SIN(PI()));
     +--------------------+------------------+
     | SIN(1)           | ROUND(SIN(PI())) |
     +--------------------+------------------+
     | 0.8414709848078965 |          0     |
     +--------------------+------------------+

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

【例4.20】使用ASIN函数计算反正弦值,输入语句如下:

     mysql> SELECT ASIN(0.8414709848078965), ASIN(3);
     +--------------------------+---------+
     | ASIN(0.8414709848078965) | ASIN(3) |
     +--------------------------+---------+
     |                1     |   NULL  |
     +--------------------------+---------+

由结果可以看到,函数ASIN和SIN互为反函数;ASIN(3)中的参数3超出了正弦值的范围,因此返回NULL。

4.2.11 余弦函数COS(x)和反余弦函数ACOS(x)

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

【例4.21】使用COS函数计算余弦值,输入语句如下:

     mysql> SELECT COS(0),COS(PI()),COS(1);
     +--------+-----------+--------------------+
     | COS(0) | COS(PI()) | COS(1)           |
     +--------+-----------+--------------------+
     |     1  |      -1   | 0.5403023058681398 |
     +--------+-----------+--------------------+

由结果可以看到,COS(0)值为1;COS(PI())值为-1;COS(1)值为0.5403023058681398。

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

【例4.22】使用ACOS函数计算反余弦值,输入语句如下:

     mysql> SELECT ACOS(1),ACOS(0), ROUND(ACOS(0.5403023058681398));
     +---------+--------------------+---------------------------------+
     | ACOS(1) | ACOS(0)          | ROUND(ACOS(0.5403023058681398)) |
     +---------+--------------------+---------------------------------+
     |     0  | 1.5707963267948966 |                    1       |
     +---------+--------------------+---------------------------------+

由结果可以看到,函数ACOS和COS互为反函数。

4.2.12 正切函数、反正切函数和余切函数

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

【例4.23】使用TAN函数计算正切值,输入语句如下:

     mysql> SELECT TAN(0.3), ROUND(TAN(PI()/4));
     +---------------------+--------------------+
     | TAN(0.3)          | ROUND(TAN(PI()/4)) |
     +---------------------+--------------------+
     | 0.30933624960962325 |            1     |
     +---------------------+--------------------+

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

【例4.24】使用ATAN函数计算反正切值,输入语句如下:

     mysql> SELECT ATAN(0.30933624960962325), ATAN(1);
     +---------------------------+--------------------+
     | ATAN(0.30933624960962325) | ATAN(1)          |
     +---------------------------+--------------------+
     |               0.3     | 0.7853981633974483 |
     +---------------------------+--------------------+

由结果可以看到,函数ATAN和TAN互为反函数。

COT(x)返回x的余切。

【例4.25】使用COT()函数计算余切值,输入语句如下:

     mysql> SELECT COT(0.3), 1/TAN(0.3),COT(PI() / 4);
     +--------------------+--------------------+--------------------+
     | COT(0.3)          | 1/TAN(0.3)        | COT(PI() / 4)     |
     +--------------------+--------------------+--------------------+
     | 3.2327281437658275 | 3.2327281437658275 | 1.0000000000000002 |
     +--------------------+--------------------+--------------------+

由结果可以看到,函数COT和TAN互为倒函数。 QFrTXLm/LgxSoKtq9Hr3kHEzEQYiumuemb5OzZrCBreTGT+nW9UnmYxgqS6OcDsB

点击中间区域
呼出菜单
上一章
目录
下一章
×