官术网_书友最值得收藏!

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列中的最大值和最小值所在的行。

主站蜘蛛池模板: 涡阳县| 宁津县| 神池县| 尉犁县| 通山县| 乐安县| 嘉义市| 丰城市| 美姑县| 沧源| 镇康县| 虹口区| 天等县| 永登县| 江山市| 商水县| 北川| 泰和县| 瑞昌市| 科尔| 黄梅县| 定安县| 山东省| 兰考县| 诸城市| 确山县| 黎川县| 平定县| 城步| 罗平县| 新蔡县| 延吉市| 兰考县| 曲阳县| 克山县| 日土县| 崇阳县| 哈密市| 远安县| 吉木乃县| 江永县|