第6章 Oracle内置函数
Oracle有多种内置函数,本章将重点介绍其中的两种,它们分别是单行函数和集合函数。这两种类型的函数使用频率比较高。
单行函数是指当查询表或视图时每行都能返回一个结果,可用于SELECT、WHERE、ORDER BY等子句中。而集合函数是作用在多行记录上返回一个结果,可用于带GROUP BY或HAVING子句的查询中。单行函数数量比较多,这里介绍其中常用的几种类型,它们分别是数值型函数、字符型函数、日期型函数、转换函数等。
介绍函数之前先简单介绍一下Oracle的DUAL表。该表是Oracle中真实存在的一个表,任何用户都可以读取,多数情况下可以用在没有目标的SELECT查询语句中。它本身只包含了一个DUMMY字段。DUAL表对Oracle很重要,用户不要试图删除该表,一旦删除,Oracle将无法启动。下面的函数讲解中会以DUAL表作为测试语句的目标表。
6.1 数值型函数
数值类型函数可以输入数字,并返回一个数值。大多数可以达到小数点后38位。一部分则支持30位或36位小数。本节主要介绍一些常用的数值函数。
6.1.1 绝对值、取余、判断数值正负函数
1)ABS(n)函数。用于返回绝对值。该函数输入一个参数,参数类型为数值型,假如参数为可以隐式转换成数值类型,那么也可以。示例脚本如下:
SELECT ABS(100),ABS(-100),ABS('100')FROM DUAL;
【执行效果】
执行效果见图6.1。
图 6.1 ABS函数
2)MOD(n2,n1)函数。该函数表示返回n2除以n1的余数。参数为任意数值或可以隐式转成数值的类型。如果n1为0,那么该函数将返回n2。示例脚本如下:
SELECT MOD(5,2),MOD(8/3,5),MOD('10',5),MOD(-10,6),MOD(1,0)FROM DUAL;
【执行效果】
执行效果见图6.2。
图 6.2 MOD函数
3)SIGN(n)函数。返回参数n的符号。正数返回1,0返回0,负数返回-1。但如果n为BINARY_FLOAT或BINARY_DOUBLE类型时,n>=0或者n=NaN函数会返回1。示例脚本如下:
SELECT SIGN('9'),SIGN(-9),SIGN(0.00),SIGN(-2*'9')FROM DUAL;
【执行效果】
执行效果见图6.3。
图 6.3 SIGN函数