6.2 数学函数
数学函数主要用来处理数值数据,主要的数学函数有绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。在有错误产生时,数学函数将会返回空值NULL。本节将介绍各种数学函数的功能和用法。
6.2.1 绝对值函数ABS(x)和返回圆周率的函数PI()
ABS(x)返回x的绝对值。
【例6.1】求2、-3.3和-33的绝对值,输入语句如下:
SELECT ABS(2), ABS(-3.3), ABS(-33);
语句执行后,结果如图6-1所示。
图6-1 SQL语句执行结果
正数的绝对值为其本身,所以2的绝对值为2;负数的绝对值为其相反数,所以-3.3的绝对值为3.3、-33的绝对值为33。
PI()返回圆周率π的值,默认的显示小数位数是6位。
【例6.2】返回圆周率值,输入语句如下:
SELECT pi();
语句执行后,结果如图6-2所示,返回结果保留了15位有效数字。
图6-2 SQL语句执行结果
6.2.2 平方根函数SQRT(x)和求余函数MOD(x,y)
SQRT(x)返回非负数x的二次方根。
【例6.3】求9、40的二次平方根,输入语句如下:
SELECT SQRT(9), SQRT(40);
语句执行后,结果如图6-3所示。
图6-3 SQL语句执行结果
注 意
3的平方等于9,因此9的二次平方根为3;40的平方根为6.32455532033676,负数没有平方根,如果所求值为负数,将会提示错误信息。
MOD(x,y)返回x被y除后的余数。MOD()对于带有小数部分的数值也起作用,返回除法运算后的精确余数。
【例6.4】对(31,8)、(234,10)、(45.5,6)进行求余运算,输入语句如下:
SELECT MOD(31,8),MOD(234, 10),MOD(45.5,6);
语句执行后,结果如图6-4所示。
图6-4 SQL语句执行结果
6.2.3 获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x)
CEIL(x)和CEILING(x)的意义相同,返回不小于x的最小整数值,返回值转化为一个BIGINT。
【例6.5】使用CEIL和CEILING函数返回最小整数,输入语句如下:
SELECT CEIL(-3.35),CEILING(3.35);
语句执行后,结果如图6-5所示。
图6-5 SQL语句执行结果
-3.35为负数,不小于-3.35的最小整数为-3,因此返回值为-3;不小于3.35的最小整数为4,因此返回值为4。
FLOOR(x)返回不大于x的最大整数值,返回值转化为一个BIGINT。
【例6.6】使用FLOOR函数返回最大整数,输入语句如下:
SELECT FLOOR(-3.35), FLOOR(3.35);
语句执行后,结果如图6-6所示。
-3.35为负数,不大于-3.35的最大整数为-4,因此返回值为-4;不大于3.35的最大整数为3,因此返回值为3。
图6-6 SQL语句执行结果
6.2.4 四舍五入函数ROUND(x)和ROUND(x,y)
ROUND(x)返回最接近于参数x的整数,对x值进行四舍五入。
【例6.7】使用ROUND(x)函数对操作数进行四舍五入操作,输入语句如下:
SELECT ROUND(-1.14),ROUND(-1.67), ROUND(1.14),ROUND(1.66);
语句执行后,结果如图6-7所示。
图6-7 SQL语句执行结果
可以看到,四舍五入处理之后,只保留了各个值的整数部分。
ROUND(x,y)返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。
【例6.8】使用ROUND(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位,输入语句如下:
SELECT ROUND(1.38, 1), ROUND(1.38, 0), ROUND(232.38, -1), ROUND (232.38,-2);
语句执行后,结果如图6-8所示。
图6-8 SQL语句执行结果
ROUND(1.38, 1)保留小数点后面1位,四舍五入的结果为1.4;ROUND(1.38, 0)保留小数点后面0位,即返回四舍五入后的整数值;ROUND(23.38, -1)和ROUND (232.38,-2)分别保留小数点左边1位和2位。
提 示
y值为负数时,保留的小数点左边的相应位数直接保存为0,同时进行四舍五入。
6.2.5 符号函数SIGN(x)
SIGN(x)返回参数的符号,x的值为负、零或正时返回结果依次为-1、0或1。
【例6.9】使用SIGN函数返回参数的符号,输入语句如下:
SELECT SIGN(-21),SIGN(0), SIGN(21);
语句执行后,结果如图6-9所示。
图6-9 SQL语句执行结果
SIGN(-21)返回-1;SIGN(0)返回0;SIGN(21)返回1。
6.2.6 幂运算函数POW(x,y)、POWER(x,y)和EXP(x)
POW(x,y)或者POWER(x,y)函数返回x的y次乘方的结果值。
【例6.10】使用POW和POWER函数进行乘方运算,输入语句如下:
SELECT POW(2,2), POWER(2,2),POW(2,-2), POWER(2,-2);
语句执行后,结果如图6-10所示。
图6-10 SQL语句执行结果
可以看到,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乘方后的值。
【例6.11】使用EXP函数计算e的乘方,输入语句如下:
SELECT EXP(3),EXP(-3),EXP(0);
语句执行后,结果如图6-11所示。
图6-11 SQL语句执行结果
EXP(3)返回以e为底的3次方,结果为20.0855369231877;EXP(-3)返回以e为底的-3次方,结果为0.0497870683678639;EXP(0)返回以e为底的0次方,结果为1。
6.2.7 对数运算函数LOG(x)
LOG(x)返回x的自然对数,x相对于基数e的对数。对数定义域不能为负数,因此数组为负数时将会弹出错误信息。
【例6.12】使用LOG(x)函数计算自然对数,输入语句如下:
SELECT LOG(3);
语句执行后,结果如图6-12所示。
图6-12 SQL语句执行结果
6.2.8 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)
RADIANS(x)将参数x由角度转化为弧度。
【例6.13】使用RADIANS将角度转换为弧度,输入语句如下:
SELECT RADIANS(90),RADIANS(180);
语句执行后,结果如图6-13所示。
图6-13 SQL语句执行结果
DEGREES(x)将参数x由弧度转化为角度。
【例6.14】使用DEGREES将弧度转换为角度,输入语句如下:
SELECT DEGREES(PI()), DEGREES(PI() / 2);
语句执行后,结果如图6-14所示。
图6-14 SQL语句执行结果
6.2.9 正弦函数SIN(x)和反正弦函数ASIN(x)
SIN(x)返回x正弦,其中x为弧度值。
【例6.15】使用SIN函数计算正弦值,输入语句如下:
SELECT SIN(1), ROUND(SIN(PI()));
语句执行后,结果如图6-15所示。
图6-15 SQL语句执行结果
ASIN(x)返回x的反正弦,即正弦为x的值。若x不在-1到1的范围之内,则会弹出错误信息“输入超出范围”。
【例6.16】使用ASIN函数计算反正弦值,输入语句如下:
SELECT ASIN(0.8414709848078965);
语句执行后,结果如图6-16所示。
图6-16 SQL语句执行结果
由结果可以看到,函数ASIN和SIN互为反函数。
6.2.10 余弦函数COS(x)和反余弦函数ACOS(x)
COS(x)返回x的余弦,其中x为弧度值。
【例6.17】使用COS函数计算余弦值,输入语句如下:
SELECT COS(0),COS(PI()),COS(1);
语句执行后结果如图6-17所示。
图6-17 SQL语句执行结果
由结果可以看到,COS(0)值为1;COS(PI())值为-1;COS(1)值为0.54030230586814。
ACOS(x)返回x的反余弦值,即余弦是x的值。若x不在-1到1的范围之内,则会弹出错误信息。
【例6.18】使用ACOS计算反余弦值,输入语句如下:
SELECT ACOS(1),ACOS(0), ROUND(ACOS(0.5403023058681398));
语句执行后,结果如图6-18所示。
由结果可以看到,函数ACOS和COS互为反函数。
图6-18 SQL语句执行结果
6.2.11 正切函数、反正切函数和余切函数
TAN(x)返回x的正切,其中x为给定的弧度值。
【例6.19】使用TAN函数计算正切值,输入语句如下:
SELECT TAN(0.3), ROUND(TAN(PI()/4));
语句执行后,结果如图6-19所示。
图6-19 SQL语句执行结果
ATAN(x)返回x的反正切,即正切为x的值。
【例6.20】使用ATAN函数计算反正切值,输入语句如下:
SELECT ATAN(0.30933624960962325), ATAN(1);
语句执行后,结果如图6-20所示。
由结果可以看到,函数ATAN和TAN互为反函数。
COT(x)返回x的余切。
图6-20 SQL语句执行结果
【例6.21】使用COT()函数计算余切值,输入语句如下:
SELECT COT(0.3), 1/TAN(0.3),COT(PI() / 4);
语句执行后,结果如图6-21所示。
图6-21 SQL语句执行结果
由结果可以看到,函数COT和TAN互为倒函数。