Oracle已经内建了许多函数,不同的函数有不同的作用和用法,有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据类型。常见的有两类,单行函数和分组函数 。
单行函数:
单行函数
分类 函数 功能 示例
字符函数 LPAD(,) 在字符串c1的左边添加字符串c2直到c1字符串的长度等于i。 SELECT LPAD(‘Hello!’,8,’ ’) leftpad,RPAD(‘Hello!’,8,’ ’) rightpad
FROM DUAL;
RPAD(,) 在字符串c1的右边添加字符串c2直到c1字符串的长度等于i。
LOWER() 把字符串c1转换为小写 SELECT LOWER(ename) one,UPPER(ename) two, INITCAP(ename) FROM EMP;
UPPER() 把字符串c1转换为大写
INITCAP() 把c1字符串的每一个单词的第一个字母转换成大写字母
LENGTH() 返回字符串c1的长度 SELECT LENGTH(‘How are you’) FROM DUAL;
SUBSTR(,) 返回字符串c1中从第i个位置开始的j个字符(向右)。如果省略j,则返回c1中从第i个位置开始的所有字符。如果j为负,则返回字符串c1中从第i个位置开始的j个字符(向左)。 SELECT SUBSTR(‘Hello,World’,1,5) FROM DUAL;
INSTR(,]) 在c1中从位置i开始查找c2在c1中出第j次的位置,i可以为负(此时,从c1的尾部开始)。 SELECT INSTR(‘Mississippi’,’i’,3,3) FROM DUAL; 返回结果11。
SELECT INSTR(‘Mississippi’,’i’,-2,3) FROM DUAL; 返回结果2。
LTRIM(,) 从c1前面开始去掉出现在c2的中任何前导字符集。 SELECT LTRIM(‘Mississippi’,’Mis’) FROM DUAL; 返回结果’ppi’。
SELECT RTRIM(‘Mississippi’,’ip’) FROM DUAL; 返回结果’Mississ’。
RTRIM(,) 从c1后面开始去掉出现在c2的中任何前导字符集。
数学函数 ABS() 返回n的绝对值 SELECT ABC(-2),ABS(2) FROM DUAL;
ROUND(,) 将n1的小数点后保留n2位(四舍五入)并返回。如果n2小于零,n1舍入到小数点左边。 SELECT ROUND(12345.678,-2),
ROUND(12345.678,2)
FROM DUAL;
分别返回结果:12300,12345.68。
CEIL() 将n 向上取整,并返回。 SELECT CEIL(5.1),CEIL(-21.4) FROM DUAL;
分别返回:6, -21。
FLOOR() 将n 向下取整,并返回。 SELECT FLOOR(5.1),FLOOR(-21.4) FROM DUAL;
分别返回:5, -22。
MOD(,) 返回n1模n2后的余数。 SELECT MOD(14,5),MOD(8,25),MOD(-64,7) FROM DUAL;
分别返回结果:4,0.5,-1。
SIGN() 符号函数,n>0,返回1。
n
单行函数:
单行函数
分类 函数 功能 示例
字符函数 LPAD(,) 在字符串c1的左边添加字符串c2直到c1字符串的长度等于i。 SELECT LPAD(‘Hello!’,8,’ ’) leftpad,RPAD(‘Hello!’,8,’ ’) rightpad
FROM DUAL;
RPAD(,) 在字符串c1的右边添加字符串c2直到c1字符串的长度等于i。
LOWER() 把字符串c1转换为小写 SELECT LOWER(ename) one,UPPER(ename) two, INITCAP(ename) FROM EMP;
UPPER() 把字符串c1转换为大写
INITCAP() 把c1字符串的每一个单词的第一个字母转换成大写字母
LENGTH() 返回字符串c1的长度 SELECT LENGTH(‘How are you’) FROM DUAL;
SUBSTR(,) 返回字符串c1中从第i个位置开始的j个字符(向右)。如果省略j,则返回c1中从第i个位置开始的所有字符。如果j为负,则返回字符串c1中从第i个位置开始的j个字符(向左)。 SELECT SUBSTR(‘Hello,World’,1,5) FROM DUAL;
INSTR(,]) 在c1中从位置i开始查找c2在c1中出第j次的位置,i可以为负(此时,从c1的尾部开始)。 SELECT INSTR(‘Mississippi’,’i’,3,3) FROM DUAL; 返回结果11。
SELECT INSTR(‘Mississippi’,’i’,-2,3) FROM DUAL; 返回结果2。
LTRIM(,) 从c1前面开始去掉出现在c2的中任何前导字符集。 SELECT LTRIM(‘Mississippi’,’Mis’) FROM DUAL; 返回结果’ppi’。
SELECT RTRIM(‘Mississippi’,’ip’) FROM DUAL; 返回结果’Mississ’。
RTRIM(,) 从c1后面开始去掉出现在c2的中任何前导字符集。
数学函数 ABS() 返回n的绝对值 SELECT ABC(-2),ABS(2) FROM DUAL;
ROUND(,) 将n1的小数点后保留n2位(四舍五入)并返回。如果n2小于零,n1舍入到小数点左边。 SELECT ROUND(12345.678,-2),
ROUND(12345.678,2)
FROM DUAL;
分别返回结果:12300,12345.68。
CEIL() 将n 向上取整,并返回。 SELECT CEIL(5.1),CEIL(-21.4) FROM DUAL;
分别返回:6, -21。
FLOOR() 将n 向下取整,并返回。 SELECT FLOOR(5.1),FLOOR(-21.4) FROM DUAL;
分别返回:5, -22。
MOD(,) 返回n1模n2后的余数。 SELECT MOD(14,5),MOD(8,25),MOD(-64,7) FROM DUAL;
分别返回结果:4,0.5,-1。
SIGN() 符号函数,n>0,返回1。
n