天天看點

Oracle中的常用數值函數

單值函數

四則運算

文法:“+”,“-”,“*”,“/”

功能:數字的四則運算

示例:​

​select 3+2,3-2,3*2,3/2 from dual;​

​​
結果:5 1 6 1.5

NULL

文法:表示為空,沒有任何意義

功能:最好不要讓null參與運算

示例:​

​select 3+NULL,3-NULL,3*NULL,3/NULL from dual;​

​​
結果:​

​NULL NULL NULL NULL​

NVL:空值置換

文法:NVL(value,substitute)

功能:如果value是null,則用substitute的值代替,否則就是value

示例:​

​select nvl(NULL,123),nvl(0,123) from dual;​

​​
結果:123 0
注意:NVL的使用不限于數值,他們同樣可以适用于其他資料類型,但是要保證value參數和substitute參數類型是相同的。

NVL2

文法:NVL2(expr1,expr2,expr3)

功能:如果參數表達式expr1值為NULL

則NVL2()函數傳回參數表達式expr3的值

如果參數表達式expr1值不為NULL

則NVL2()函數傳回參數表達式expr2的值

示例:​

​select nvl2(1,3,4) from dual;​

​​
結果:3
執行個體:​

​select nvl2(null,3,4) from dual;​

​​
結果:4
注意:NVL2(表達式,不為空設值,為空設值)

ABS:絕對值

文法:ABS(expr)

功能:取絕對值

示例:簡單到不行,就算了

CEIL

文法: CEIL(expr)

功能:CEIL用于産生大于或等于目前值的最小整數

示例:​

​select ceil(1), ceil(1.2), ceil(1.5), ceil(1.6), ceil(-2), ceil(-2.4), ceil(-2.5), ceil(-2.6) from dual;​

​​
結果:1 2 2 2 -2 -2 -2 -2

FLOOR

文法: FLOOR(expr)

功能:傳回小于或等于指定值的最大整數

示例:
select floor(1),
             floor(1.2),
             floor(1.5),
             floor(1.6),
             floor(-2),
             floor(-2.4),
             floor(-2.5),
             floor(-2.6)
  from dual;      
結果:1 1 1 1 -2 -3 -3 -3

MOD

文法: MOD(value,divisor)

功能:求餘

示例:
select mod(50, 10),
             mod(15, 4),
             mod(12.3, 5),
             mod(5.5, 2.9),
             mod(-7, 5),
             mod(0, 5),
             mod(5, 0),
             mod(7, -5)
        from dual;      
結果:​

​0 3 2.3 2.6 -2 0 5 2​

POWER

文法: POWER(value,exponent)

功能:求一個值的指數乘方

示例:easy !

SQRT

文法: SQRT(value)

功能:求平方根

示例:​

​select sqrt(121) from dual;​

​​
等價于:​

​select power(121,0.5) from dual;​

​​
結果:11
注意:Oracle不支援虛數,是以這個value不能為負數,否則會傳回錯誤。

ROUND

文法:ROUND(value,precision)

功能:ROUND則根據給定的精讀舍入數值。

示例:​

​select round(11,2),round(11.111,2),round(11.888,2),round(11,-1) from dual;​

​​
結果: 11 11.11 11.89 10
注意: precision參數可以為負數,表示精度移到小數點左邊

TRUNC

文法:TRUNC(value,precision)

功能:TRUNC按精讀截取某個實數

示例:​

​select trunc(11,2),trunc(11.111,2),trunc(11.888,2),trunc(11,-1) from dual;​

​​
結果: 11 11.11 11.88 10
注意: trunc是直接截取,而round會四舍五入處理。

SIGN

文法: SIGN(value)

功能:取某個數的符号(正或負)

示例:​

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

​​
結果:1-、1、0
注意:正數傳回1.負數傳回-1,零傳回0

聚集函數

COUNT

文法:COUNT(*)

功能:傳回總的資料條數

示例:COUNT(具體字段)
結果:傳回目前字段中不為NULL的個數
注意: 組值函數很多時候會與單值函數結合使用。

常用的組值函數是:AVG,COUNT,MAX,MIN,SUM

功能:字面意思就能看出來

清單函數

GREATEST和LEAST

文法:

GREATEST(value1,value2.value3...)
  LEAST(value1,value2.value3...)      

功能:函數GREATEST和LEAST用于傳回最大和最小的值。

注意: 他們參數可以是多個,可以使用列、常量、計算結果等
他們不僅限于數值類型中使用,也可以用于字元串類型

coalesce

文法: COALESCE(value1,value2.value3…)

功能:依次參考各參數表達式,遇到非null值即停止并傳回該值

注意:如果所有的表達式都是空值,最終将傳回一個空值