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

ABS(x)返回x的绝对值。
【例6-15】求2,-3.3和-33的绝对值,输入语句如下:

执行结果如图6-15所示。
正数的绝对值为其本身,2的绝对值为2;负数的绝对值为其相反数,-3.3的绝对值为3.3;-33的绝对值为33。
PI()返回圆周率π的值。默认的显示小数位数是6位。
【例6-16】返回圆周率值,输入语句如下:

执行结果如图6-16所示。

图6-15 ABS()函数

图6-16 PI()函数
6.3.2 平方根函数SQRT(x)

SQRT(x)返回非负数x的二次平方根。
【例6-17】求9,40的二次平方根,输入语句如下:
SELECT SQRT(9), SQRT(40);
执行结果如图6-17所示。

图6-17 SQRT()函数
6.3.3 获取随机数的函数RAND()和RAND(x)

RAND(x)返回一个随机浮点值v,范围为0~1(即0 ≤ v ≤ 1.0)。若指定一个整数参数x,则它被用作种子值,使用相同的种子数将产生重复序列。如果用同一种子值多次调用RAND()函数,它将返回同一生成值。
【例6-18】使用RAND()函数产生随机数,输入语句如下:

执行结果如图6-18所示。
可以看到,不带参数的RAND()每次产生的随机数值是不同的。
【例6-19】使用RAND(x)函数产生随机数,输入语句如下:

执行结果如图6-19所示。

图6-18 不带参数的RAND()函数

图6-19 带参数的RAND()函数
可以看到,当RAND(x)的参数相同时,将产生相同的随机数,不同的x产生的随机数值不同。
6.3.4 四舍五入函数ROUND(x,y)

ROUND(x,y)返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。
【例6-20】使用ROUND(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位,输入语句如下:

执行结果如图6-20所示。

图6-20 ROUND()函数
ROUND(1.38,1)保留小数点后面1位,四舍五入的结果为1.4;ROUND(1.38,0)保留小数点后面0位,即返回四舍五入后的整数值;ROUND(232.38,-1)和ROUND(232.38,-2)分别保留小数点左边1位和2位。
6.3.5 符号函数SIGN(x)

SIGN(x)返回参数的符号,x的值为负、零或正时,返回结果依次为-1、0或1。
【例6-21】使用SIGN()函数返回参数的符号,输入语句如下:
SELECT SIGN(-21),SIGN(0), SIGN(21);
执行结果如图6-21所示。

图6-21 SIGN()函数
SIGN(-21)返回-1;SIGN(0)返回0;SIGN(21)返回1。
6.3.6 获取整数的函数CEILING(x)和FLOOR(x)

CEILING(x)返回不小于x的最小整数值。
【例6-22】使用CEILING()函数返回最小整数,输入语句如下:

执行结果如图6-22所示。
-3.35为负数,不小于-3.35的最小整数为-3,因此返回值为-3;不小于3.35的最小整数为4,因此返回值为4。
FLOOR(x)返回不大于x的最大整数值。
【例6-23】使用FLOOR()函数返回最大整数,输入语句如下:

执行结果如图6-23所示。

图6-22 CEILING()函数

图6-23 FLOOR()函数
-3.35为负数,不大于-3.35的最大整数为-4,因此返回值为-4;不大于3.35的最大整数为3,因此返回值为3。
6.3.7 幂运算函数POWER(x,y)、SQUARE (x)和EXP(x)

POWER(x,y)函数返回x的y次方的结果值。
【例6-24】使用POWER()函数进行乘方运算,输入语句如下:

执行结果如图6-24所示。
可以看到,POWER(2,2)返回2的2次方,结果是4;POWER(2,-2)返回2的-2次方,结果为4的倒数,即0.25。
SQUARE(x)返回指定浮点值x的2次方。
【例6-25】使用SQUARE()函数进行次方运算,输入语句如下:

执行结果如图6-25所示。
EXP(x)返回e的x次方后的值。
【例6-26】使用EXP()函数计算e的次方,输入语句如下:

执行结果如图6-26所示。

图6-24 POWER()函数

图6-25 SQUARE()函数

图6-26 EXP()函数
EXP(3)返回以e为底的3次方,结果为20.085536923187;EXP(-3)返回以e为底的-3次方,结果为0.0497870683678639;EXP(0)返回以e为底的0次方,结果为1。
6.3.8 对数运算函数LOG(x)和LOG10(x)

LOG(x)返回x的自然对数,x相对于基数e的对数。
【例6-27】使用LOG()函数计算自然对数,输入语句如下:

执行结果如图6-27所示。
对数定义域不能为负数。
LOG10(x)返回x的基数为10的对数。
【例6-28】使用LOG10()函数计算以10为基数的对数,输入语句如下:

执行结果如图6-28所示。

图6-27 LOG()函数

图6-28 LOG10()函数
10的0次方等于1,因此LOG10(1)返回结果为0,10的2次方等于100,因此LOG10(100)返回结果为2。10的3次方等于1000,因此LOG10(1000)返回结果为3。
6.3.9 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)

RADIANS(x)将参数x由角度转换为弧度。
【例6-29】使用RADIANS()函数将角度转换为弧度,输入语句如下:

执行结果如图6-29所示。
DEGREES(x)将参数x由弧度转换为角度。
【例6-30】使用DEGREES()函数将弧度转换为角度,输入语句如下:

执行结果如图6-30所示。

图6-29 RADIANS()函数

图6-30 DEGREES()函数
6.3.10 正弦函数SIN(x)和反正弦函数ASIN(x)

SIN(x)返回x的正弦,其中,x为弧度值。
【例6-31】使用SIN()函数计算正弦值,输入语句如下:

执行结果如图6-31所示。
ASIN(x)返回x的反正弦,即正弦为x的值。若x不在-1~1,则返回NULL。
【例6-32】使用ASIN()函数计算反正弦值,输入语句如下:

执行结果如图6-32所示。
由结果可以看到,ASIN函数的值域正好是SIN函数的定义域。

图6-31 SIN()函数

图6-32 ASIN()函数
6.3.11 余弦函数COS(x)和反余弦函数ACOS(x)

COS(x)返回x的余弦,其中,x为弧度值。
【例6-33】使用COS()函数计算余弦值,输入语句如下:

执行结果如图6-33所示。
由结果可以看到,COS(0)值为1;COS(PI())值为-1;COS(1)值为0.54030230586814。
ACOS(x)返回x的反余弦,即余弦是x的值。若x不在-1~1,则返回NULL。
【例6-34】使用ACOS()函数计算反余弦值,输入语句如下:

执行结果如图6-34所示。

图6-33 COS()函数

图6-34 ACOS()函数
由结果可以看到,函数ACOS和COS互为反函数。
6.3.12 正切函数、反正切函数和余切函数

TAN(x)返回x的正切,其中,x为给定的弧度值。
【例6-35】使用TAN()函数计算正切值,输入语句如下:

执行结果如图6-35所示。
ATAN(x)返回x的反正切,即正切为x的值。
【例6-36】使用ATAN()函数计算反正切值,输入语句如下:

执行结果如图6-36所示。
由结果可以看到,函数ATAN和TAN互为反函数。
COT(x)返回x的余切。
【例6-37】使用COT()函数计算余切值,输入语句如下:

执行结果如图6-37所示。

图6-35 TAN()函数

图6-36 ATAN()函数

图6-37 COT()函数
由结果可以看到,函数COT和TAN互为倒函数。