Oracle数学函数

125 阅读4分钟

Oracle的数学函数

abs,acos,asin,atan,atan2,ceil,cos,cosh,exp,floor,ln,log,mod,power,round,sign,sin,sinh,sqrt,tan,tanh,trunc

说明:数学函数的输入和输出都是数字型,并且多数函数精确到38位。函数cos\cosh\exp\ln\log\sin\sinh\sqrt\tan\tanh精确到36位,acos\asin\atan\atan2精确到30为。数学函数可以在sql语句和plsql块中引用*/

/*ABS

语法:ABS(x)

功能:得到x的绝对值.

结果:99 99*/

select abs(99),abs(-99) from dual;

/*ACOS

语法:ACOS(x)

功能:返回x的反余弦值. 输入x应该从-1到1之间的数,结果在0到pi之间,输出以弧度为单位.

结果:3.14159265358979*/

select acos(-1) from dual;

/*ASIN

语法:ASIN(x)

功能:返回x的反正弦值. X的范围应该是-1到1之间,返回的结果在-pi/2到pi/2之间,以弧度为单位.

结果:0.523598775598299*/

select asin(0.5) from dual;

/*ATAN

语法:ATAN(x)

功能:计算x的反正切值.返回值在-pi/2到pi/2之间,单位是弧度.

结果:0.785398163397448*/

select atan(1) from dual;

/*ATAN2

语法:ATAN2(x,y)

功能:返回x除以y的反正切值.结果在负的pi/2到正的pi/2之间,单位是弧度.

结果:0.463647609000806*/

select antn2(1,2) from dual;

/*CEIL

语法:CEIL(x)

功能:计算大于或等于x的最小整数值.

结果:4 -3*/

select ceil(3.14) V1,ceil(-3.14) V2 from dual;

/*COS

语法:COS(x)

功能:返回x的余弦值. x的单位是弧度.

结果:-0.999999999999999*/

select cos(-3.1415927) from dual;

/*COSH

语法:COSH(x)

功能:计算x的双曲余弦值.

结果:242582597.704895*/

select cosh(20) from dual;

/*EXP

语法:EXP(x)

功能:计算e的x次幂. e为自然对数,约等于2.71828.

结果:7.38905609893065 2.71828182845905*/

select exp(2),exp(1) from dual;

/*FLOOR

语法:FLOOR(x)

功能:返回小于等于x的最大整数值.

结果:45 -46*/

SELECT FLOOR(45.67) V1,FLOOR(-45.67) V2 FROM dual;

/*LN

语法:LN(x)

功能:返回x的自然对数. x必须是正数,并且大于0

结果:0 0.693147180559945 0.999999989530502*/

select ln(1),ln(2),ln(2.7182818) from dual;

/*LOG

语法:LOG(x,y)

功能:计算以x为底的y的对数.底必须大于0而且不等于1,y为任意正数.

结果:0 3*/

select log(2,1),log(2,8) from dual;

/*MOD

语法:MOD(x,y)

功能:返回x除以y的余数.如果y是0,则返回x

结果:1 0 2*/

select mod(10,3),mod(3,3),mod(2,3) from dual;

/*POWER

语法:POWER(x,y)

功能:计算x的y次幂.

结果:1024 27*/

select power(2,10),power(3,3) from dual;

/*ROUND

语法:ROUND(x[,y])

功能:四舍五入函数,y缺省值为0,x保留整数;y>0,x保留小数点右边y位;y<0,x保留小数点左边 |y| 位;可以对时间进行round,效果是只保留年月日.

结果:55.66 55.65 50 0 100*/

select round(55.655,2),round(55.654,2),round(45.654,-1),round(45.654,-2),round(55.654,-2) from dual;

/*SIGN

语法:SIGN(x)

功能:检测x的正负.如果x<0返回-1.如果x=0返回0.如果x>0返回1.

结果:1 -1 0*/

select sign(123),sign(-100),sign(0) from dual;

/*SIN

语法:SIN(x)

功能:计算x的正弦值. X是一个以弧度表示的角度.

结果:0.999999999979986*/

select sin(1.57079) from dual;

/*SINH

语法:SINH(x)

功能:返回x的双曲正弦值.

结果:0.912945250727628 242582597.704895*/

select sin(20),sinh(20) from dual;

/*SQRT

语法:SQRT(x)

功能:返回x的平方根. x必须是正数.

结果:8 3.16227766016838*/

select sqrt(64),sqrt(10) from dual;

/*TAN

语法:TAN(x)

功能:计算x的正切值,x是一个以弧度位单位的角度.

结果:2.23716094422474 0.648360827459087*/

select tan(20),tan(10) from dual;

/*TANH

语法:TANH(x)

功能:计算x的双曲正切值.

结果:1 2.23716094422474*/

select tanh(20),tan(20) from dual;

/*TRUNC

语法:TRUNC(x[,y])

功能:截取数字函数,只舍不入函数, y缺省值为0,x保留整数;y>0,x保留小数点右边y位;y<0,x保留小数点左边 |y| 位

结果:55.65 55.65 40 0

2023/3/4 2023/3/1 2023/1/1 2023/2/26 2023/1/1(SYSDATE:2023/3/4)*/

SELECT TRUNC(55.655,2),TRUNC(55.654,2),TRUNC(45.654,-1),TRUNC(45.654,-2) FROM DUAL;

SELECT TRUNC(SYSDATE,'DD'),/*当天*/TRUNC(SYSDATE,'MM'),/*本月第一天*/TRUNC(SYSDATE,'yyyy'),/*本年第一天*/TRUNC(SYSDATE,'day'),/*本周第一天(周日)*/TRUNC(SYSDATE,'q')/*本季度第一天*/ FROM DUAL;