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