- Oracle從新手到高手
- 楊繼萍
- 1896字
- 2019-12-09 14:49:07
5.2 數值函數
數值函數可以用于執行各種數據計算。在其他編程語言中提供了大量的數學函數,這也是編程語言最早的功能之一。在Oracle系統中,也提供了大量的數學函數,這些函數大幅增強了Oracle系統的科學計算能力。
5.2.1 數值函數概述
在Oracle系統中,幾乎包括所有常用的數學函數,Oracle系統可用的數學函數如下表所示。

Oracle中的函數可以處理單值、值組和值列表3類數值,其語法格式為:
FUNCTLON(value [, option])
上述代碼中的參數value表示數字、數值列或變量,其列名和數字無須使用單引號。
當在計算中使用多個運算符時,需要遵循運算符的執行順序,也就是執行公式運算的優先級。這一點與數學運算的執行順序一樣,即優先級最高的為圓括號,隨后是乘除法,最后為加減法。而對于同等優先級的運算,則遵循從左到右的順序來執行。
5.2.2 單值函數
單值,顧名思義只包含一個數值。Oracle中的單值函數包括NULL()函數、ABS()函數和MOD()函數等。
1. NULL
NULL表示空值,區別于0,不能參與運算,任何算術運算中包含NULL值時其結果都為NULL值。
例如,下面的語句中,對CAOJIN行中NUB1和NUB3列中的值進行加減法運算,其中NUB3列的值為空值。

從上述計算結果可以發現,由于NUB3列中為空值,所以運算結果也都為空值,這一點不同于0值。
2. NVL()函數
雖然NULL為空值,但在特殊情況下用戶可為這些空值評估均值,以均值來替換NULL空值。例如,某同學的某項考試成績為空值,此時可以根據歷史成績評估該成績,并用該成績替換空值,從而進行整體計算。該函數的語法格式為:
NVL(value,substitute)
在上述代碼中,參數value表示NULL值,當該參數為NULL值時,結果為substitute值,否則為value值。
在Oracle中,可使用置換函數NVL(),以指定的值來替換空值。例如,下面的語法中,以數字82來替換空值。

3. ABS()函數
ABS()函數為絕對值函數,該函數類似于數學中的絕對值,用于求正數值。
例如,下面的語句中使用了ABS()函數求數值的正數。
ABS(-16.5)=16.5 ABS(16.5)=16.5 ABS(-100)=100
例如,下面的示例演示了求MV表中NUB1列中的絕對值的實現過程。

4. CEIL()函數
CEIL(X)函數可以得到大于或等于X的最大整數。該函數適用于一些比較運算。使用該函數時要特別注意正負數的問題。
下面的示例使用CEIL()函數,計算大于6.6、6和-6.6的最大整數。

5. FLOOR()函數
FLOOR()函數用于取整,它可返回小于或等于指定值的最大整數,類似于舍入函數。已知MV表中的NUB3列中的數據情況如下:

下面,運用FLOOR()函數,對NUB3列中的數值取整。

6. MOD()函數
MOD()函數用于求模運算,返回兩數相除的余數,若被除數為0,則返回除數。該函數的語法格式為:
MOD(value,divisor)
下面的示例顯示了MOD()函數的演示過程。

7. POWER()函數
POWER()函數用于計算指定數值的乘冪,該函數的語法格式為:
POWER(value,exponent)
下面的示例顯示了POWER()函數的演示過程。

提示:
POWER()函數中的exponent參數可為任意實數。
8. SQRT()函數
SQRT()函數用于計算指定數值的平方根,指定的數值必須大于等于0,否則會返回錯誤值。
下面的示例顯示了SQRT()函數的演示過程。

9. EXP()和POWER()函數
EXP(X)函數用于計算數字e的X次冪,而POWER(X,Y)函數則用于計算X的Y次冪。這兩個函數的差別在于底不同。
下面的示例演示了EXP()和POWER()函數的使用方法。

5.2.3 聚集和列表函數
Oracle中,除了單值函數之外,還具有聚集和列表函數。運用這些函數,不僅可以查詢指定行,還可以對數據進行相應的統計操作。
1. 統計類函數
統計類函數包括平均值函數AVG()、最大值函數MAX()、最小值函數MIN()、求和函數SUM()等。該類型函數的使用方法與Excel中函數的使用方法完全相同。
下面的示例顯示了統計類函數的演示過程。

在上述代碼中,AVG表示平均值,COUNT表示行數(不為空),MAX表示最大值,MIN表示最小值,SUM則表示合計值。通過上述描述可以發現,該類型的統計函數只統計不為空行數的數值,如果一行中的數字為空,其計算結果大不相同。下面的示例顯示了刪除NUB1列中某行數據后的結果。

2. 標準差和標準方差函數
STDDEV()函數用于計算數值的標準差,而VARIANCE()函數則用于計算數值的標準方差。下面的語句展示了標準差和標準方差函數的運行結果。

3. 計算列函數
在Oracle中,可以使用GREATEST()函數按行搜索最大值,而LEAST()函數則可以按行搜索最小值。上述兩個函數屬于多值函數,其語法格式為:
GREATEST(value1,value2,value3,……) LEAST(value1,value2,value3,……)
下面的語句中,首先查詢MV表格中的具體數據,以方便與下面的搜索結果進行對比。

然后,運用上述兩個函數查找每行中的最大值和最小值,其運行結果如下所示。

提示:
用戶可以使用COALESCE()函數返回指定行中的首個非空值,如果該行內所有的數據都為空值,則返回NULL。
4. 使用MAX()和MIN()函數查找行
MAX()函數和MIN()函數用于求指定范圍數據內的最大值和最小值,用戶可以運用上述兩個函數來搜索列中的最大值和最小值,并返回包含最大值和最小值的行數據。
下面的示例顯示了使用MAX()函數查找NUB3列中最大值所返回的數據行。

而下面的示例顯示了使用MIN()函數查找NUB3列中最小值所返回的數據行。

當然,除了上述執行單個函數搜索之外,用戶還可以組合MIN()函數和MAX()函數,來搜索相對應的數據行。例如,下面的示例代碼查詢了NUB3列中的最大值和最小值所在的行。

- 大學計算機基礎(第二版)
- Instant Testing with CasperJS
- C語言程序設計實踐教程(第2版)
- Java異步編程實戰
- 摩登創客:與智能手機和平板電腦共舞
- 動手玩轉Scratch3.0編程:人工智能科創教育指南
- C#程序設計(慕課版)
- Object-Oriented JavaScript(Second Edition)
- Hadoop+Spark大數據分析實戰
- Linux命令行與shell腳本編程大全(第4版)
- Visual C++開發入行真功夫
- 從零開始學C#
- 打開Go語言之門:入門、實戰與進階
- GameMaker Essentials
- Cocos2d-x by Example:Beginner's Guide(Second Edition)