普通函数
正负值类:
ABS
绝对值,返回值一定大于等于0
SIGN
返回值只有1(正数)、-1(负数)和0(零)
舍入类的函数
CEL,向上取整
ceil(1.06)=2,ceil1.9)=2
FLOOR,向下取整
floor(1.06)=1, floor(1.9)=1
ROUND,四舍五入
round(1.06)=1, round(1.9)=2. round(15.06,1)=15.1, round(15.06,-1)=20
Trunc,截断
trunc(1.06)=1, trunc(1.9)=1, trunc(15.16,1)=15.1, trunc(15.16,-1)=10
求余类的函数
MOD,求余
经典:mod(n2,n1)=n2-n1* FLOOR(n2/n1)
oracle: mod(n2, n1)=sign(n2*(abs(n2)-abs(n1)*FLOOR(abs(n2)/abs(n1)))
・n2为正数:mod(13,5)=3,mod(13.12,5)=3.12,mod(13.12,5.1)=2.92,mod(13.12,-5)=3.12
n2为负数:mod(-13,5)=-3,mod(-13.12,5.1)=-2.92
Oracle里的mod求余和传统意义上的mod函数不一样
REMAINDER,求余2
・经典: remainder(n2.n1)=n2-n1* ROUND(n2/n1)
oracle remainder(n2, n1)=n2-n1*(case when ABS(2/n1)-05=Trunc(ABS(n2/n1))and
mod(ROUND(AB$( 2/n1)). 2)=1 then ROUND(n2/n1)-SIGN(2/n1)else ROUND(n2/n1)end
n2为正数: remainder(13,5)=-2, remainder(113)=1
・n2为负数: remainder(-13,5)=2, remainder(-13.12,5.1)=2.18
通常我们使用MOD,而不使用 REMAINDER