PostgreSQL 11从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

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互为倒函数。