![Oracle 12c从入门到精通(视频教学超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/585/24172585/b_24172585.jpg)
5.2 数学函数
数学函数主要用来处理数值数据,主要的数学函数有绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。在有错误产生时,数学函数将会返回空值NULL。本节将介绍各种数学函数的功能和用法。
5.2.1 绝对值函数ABS(x)
ABS(X)返回X的绝对值。
【例5.1】求2,-3.3和-33的绝对值,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P91_1.jpg?sign=1735638188-mXqHeTxYV1xns9b3ZdFMWVaLoLH4G0sq-0-b6f55633630fca4a7c8beac521bdb65d)
正数的绝对值为其本身,2的绝对值为2。负数的绝对值为其相反数,-3.3的绝对值为3.3。-33的绝对值为33。
提示
dual表是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。
5.2.2 算术平方根函数SQRT(x)和求余函数MOD(x,y)
SQRT(x)返回非负数x的二次方根。
【例5.2】求9,40和64的算术平方根,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P91_2.jpg?sign=1735638188-Ogy0Xf4EoDjLpLVKDhhyacOixah8MciV-0-3597b745dc1908ae67027ea493dda529)
3的平方等于9,因此9的算术平方根为3。40的算术平方根为6.32455532。64的算术平方根为8。
MOD(x,y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,它返回除法运算后的精确余数。
【例5.3】对MOD(31,8)、MOD(234, 10)、MOD(45.5,6)进行求余运算,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P91_3.jpg?sign=1735638188-HCsC0KgLFbLmFkIOUizXsO0mrqLAZ2Cx-0-d927c8da278d19216f107196403e662f)
5.2.3 获取整数的函数CEIL(x)和FLOOR(x)
CEIL(x)返回不小于x的最小整数值。
【例5.4】使用CEIL函数返回最小整数,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P91_4.jpg?sign=1735638188-CF9FqD2TGwvq5LQRvlHZiPU5y9BspIbf-0-912a7da79e2d03f989bdd888325b0fab)
-3.35为负数,不小于-3.35的最小整数为-3,因此返回值为-3。不小于3.35的最小整数为4,因此返回值为4。
FLOOR(x)返回不大于x的最大整数值,返回值转化为一个BIGINT。
【例5.5】使用FLOOR函数返回最大整数,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P92_1.jpg?sign=1735638188-YH5naunJ0BB3MhQFIMLnWQMdLNeUzStV-0-8f6c62d27c4b277428c5945da3eb2c68)
-3.35为负数,不大于-3.35的最大整数为-4,因此返回值为-4。不大于3.35的最大整数为3,因此返回值为3。
5.2.4 获取随机数的函数DBMS_RANDOM.RANDOM和DBMS_RANDOM.RANDOM(x, y)
DBMS_RANDOM.RANDOM返回一个随机值。
【例5.6】使用DBMS_RANDOM.RANDOM产生随机数,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P92_2.jpg?sign=1735638188-yTfn1a0B6TEvnMV77ME3DgoINZW4kjwb-0-ea8ca01320f4e1dc6375274fa453ae78)
可以看到,不带参数的DBMS_RANDOM.RANDOM每次产生的随机数值是不同的。
【例5.7】使用DBMS_RANDOM.VALUE(x,y)函数产生1~20之间随机数,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P92_3.jpg?sign=1735638188-NIBAUW26yjSq6QEVBU83pKs0DeDkhZD4-0-a6500f9df26adb8260ec40ef805efd6b)
结果可以看到,DBMS_RANDOM.VALUE(1, 20)产生了1~20的随机数。
5.2.5 四舍五入函数ROUND(x)、ROUND(x,y)和TRUNC(x,y)
ROUND(x)返回最接近于参数x的整数,对x值进行四舍五入。
【例5.8】使用ROUND(x)函数对操作数进行四舍五入操作,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P92_4.jpg?sign=1735638188-WLDn9rd6JZGYkxspoNfpg22Tny8sWiAf-0-98dd4d37e804f5a7d552a0b0934352c4)
可以看到,四舍五入处理之后,只保留了各个值的整数部分。
ROUND(x,y)返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。
【例5.9】使用ROUND(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P93_1.jpg?sign=1735638188-OOjGSrklGkGYShTolerotMH2CXf7uplM-0-61cd3c46797787c65e036f7fc84aeac0)
ROUND(1.38, 1)保留小数点后面1位,四舍五入的结果为1.4。ROUND(1.38, 0)保留小数点后面0位,即返回四舍五入后的整数值。ROUND(23.38, -1)和ROUND(232.38,-2)分别保留小数点左边1位和2位。
提示
y值为负数时,保留的小数点左边的相应位数直接保存为0,不进行四舍五入。
TRUNC(x, y)返回被舍去至小数点后y位的数字x。若y的值为0,则结果不带有小数点或不带有小数部分。若y设为负数,则截去(归零)x小数点左起第y位开始后面所有低位的值。
【例5.10】使用TRUNC(x, y)函数对操作数不进行四舍五入操作,结果保留小数点后面指定y位,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P93_2.jpg?sign=1735638188-qABPpVuKixt3YRLmwFiSfdr54J5sjhTS-0-466e68aea4a4a967f89471988e964d76)
TRUNC(1.31,1)和TRUNC(1.99,1)都保留小数点后1位数字,返回值分别为1.3和1.9。TRUNC(1.99,0)返回整数部分值1。TRUNC(19.99,-1)截去小数点左边第1位后面的值,并将整数部分的1位数字置0,结果为10。
提示
ROUND(x,y)函数在截取值的时候会四舍五入,而TRUNC(x,y)直接截取值,并不进行四舍五入。
5.2.6 符号函数SIGN(x)
SIGN(x)返回参数的符号,x的值为负、零或正时返回结果依次为-1、0或1。
SIGN(n)函数返回参数n的符号。正数返回1,0返回0,负数返回-1。
【例5.11】返回3,-10和0的符号。输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P94_1.jpg?sign=1735638188-S1XBzNyWoPxrx50nB83aUBGruHgXpkcY-0-9f379c13cbf3ee7a7894a5000c813b6b)
SIGN(3)返回1,SIGN(-10)返回-1,SIGN(0)返回0。
5.2.7 幂运算函数POWER(x,y)和EXP(x)
POWER(x,y)函数返回x的y次乘方的结果值。
【例5.12】使用POWER函数进行乘方运算,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P94_2.jpg?sign=1735638188-FUzeehJjUqgBkmqmTY2gnf0BpnDGQIvr-0-322165d141ca6fccca4437126742e9b1)
可以看到,POWER(2,2)返回2的2次方,是4。POWER(2,-2)返回2的-2次方,结果为4的倒数,即0.25。
EXP(x)返回e的x乘方后的值。
【例5.13】使用EXP函数计算e的乘方,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P94_3.jpg?sign=1735638188-s49PD6urUpVcT9FmHXyIuCk9TQ2khk4Z-0-d3f02180a28cabe8237f04333b2696ab)
EXP(3)返回以e为底的3次方,结果为20.08553692。EXP(-3)返回以e为底的-3次方,结果为0.04978706837。EXP(0)返回以e为底的0次方,结果为1。
5.2.8 对数运算函数LOG(x,y)和LN(x)
LOG(x,y)返回以x为底y的对数。
【例5.14】使用LOG(x)函数计算自然对数,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P94_4.jpg?sign=1735638188-LjYnm67IYET7A5kegRgQpMFiBZJwWIjz-0-750893849cac37714c9d7cce1220d686)
10的2次乘方等于100,因此LOG(10, 100)返回结果为2。同样LOG(7, 49)返回结果为2。
LN(x)返回x的自然对数,x相对于基数e的对数,参数n要求大于0。
【例5.15】使用LN计算以e为基数的对数,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P94_5.jpg?sign=1735638188-pPWE1X2ZpJ6CAKuFBL4Rz6dZsf3wG2U6-0-600c620c758486bb282836f4b055750a)
5.2.9 正弦函数SIN(x)和反正弦函数ASIN(x)
SIN(x)返回x正弦,其中x为弧度值。
【例5.16】使用SIN函数计算正弦值,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P95_2.jpg?sign=1735638188-mhShmsI6cYJCo5tACVhuKRfu7RXCjnss-0-742701613a0a9e15d963e52b6063c65d)
ASIN(x)返回x的反正弦,即正弦为x的值。x的取值在-1到1的范围之内。
【例5.17】使用ASIN函数计算反正弦值,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P95_3.jpg?sign=1735638188-zuhXPonj39a3v21TfDQngjgV9HbpUKcN-0-3ccadf183d381af691b186afd66748dc)
由结果可以看到,函数ASIN和SIN互为反函数。
5.2.10 余弦函数COS(x)和反余弦函数ACOS(x)
COS(x)返回x的余弦,其中x为弧度值。
【例5.18】使用COS函数计算余弦值,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P95_4.jpg?sign=1735638188-Se5aXpuq2tEsrd4STkZ7x3wqlwqQ1PU6-0-50f8753ed488f665bf8b611a11332a10)
由结果可以看到,COS(0)值为1,COS(1)值为0.5403023059。
ACOS(x)返回x的反余弦,即余弦是x的值。X取值在-1~1的范围之内。
【例5.19】使用ACOS函数计算反余弦值,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P95_5.jpg?sign=1735638188-DYq38Z48w0ojd7cW9Pco6vMeCIrrOXfi-0-78353ef7ba94f5e671ae6bd15914bb9e)
由结果可以看到,函数ACOS和COS互为反函数。
5.2.11 正切函数、反正切函数和余切函数
TAN(x)返回x的正切,其中x为给定的弧度值。
【例5.20】使用TAN函数计算正切值,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P96_1.jpg?sign=1735638188-1piYCuxgClQMksf7i37t4raLMhVlX3MH-0-9710c52e47c2a0477e693d3cb6b142dc)
ATAN(x)返回x的反正切,即正切为x的值。
【例5.21】使用ATAN函数计算反正切值,输入语句如下:
![](https://epubservercos.yuewen.com/32DA48/13043251803825906/epubprivate/OEBPS/Images/Figure-P96_2.jpg?sign=1735638188-chS6evwaA4o0N7X0Xsl547ukEyP9hC19-0-dffa3820c695430f5abd8b2ba3d2f01a)
由结果可以看到,函数ATAN和TAN互为反函数。