ORACLE函数
1 数值函数
1.1 MOD函数
- 语法:mod(n1,n2)
n1除以n2取余,n2=0时返回n1
select mod(24,5) from dual;
select mod(24,0) from dual;
1.2 ROUND函数
- 语法:round(n1[,n2])
n1:表示一个数字
n2:表示四舍五入后保留小数的位数,可以为负数,不写默认为0
select trunc(23.56) from dual;
select trunc(23.56,1) from dual;
select trunc(23.56,-1) from dual;
1.3 TRUNC函数
- 语法:trunc(n1[,n2])
n1:表示一个数字
n2:表示小数点后截取的位数,可以为负数,不写默认为0
select trunc(23.56) from dual;
select trunc(23.56,1) from dual;
select trunc(23.56,-1) from dual;
2 字符型函数
2.1 LOWER函数
- 语法:lower©
将字符串c内所有字符变为小写
select lower('WhaT is tHis') from dual;
2.2 UPPER函数
- 语法:upper©
将字符串c内所有字符变为大写
select upper('WhaT is tHis') from dual;
2.3 LPAD函数
- 语法:lpad(c1,n[,c2])
c1:表示一个字符串
n:表示从左向右截取字符的长度
c2:表示长度不足时,在左侧用于补齐的字符,不写默认为空格
select lpad('WhaT is tHis',6) from dual;
select lpad('WhaT is tHis',30) from dual;
select lpad('WhaT is tHis',30,'*') from dual;
2.4 RPAD函数
- 语法:rpad(c1,n[,c2])
c1:表示一个字符串
n:表示从左向右截取字符的长度
c2:表示长度不足时,在右侧用于补齐的字符,不写默认为空格
select rpad('WhaT is tHis',6) from dual;
select rpad('WhaT is tHis',30) from dual;
select rpad('WhaT is tHis',30,'*') from dual;
2.5 TRIM函数
- 语法:trim([leading||trailing||both] c2 from c1)
leading:只去除头部
trailing:只去除尾部
both:头尾都去除,默认选项,可以不写
c1:表示一个字符串
c2:表示要去除的字符,长度只能为1
select trim('W' from 'WhaT is tHis wW') from dual;
select trim(leading 'W' from 'WhaT is tHis wW') from dual;
select trim(trailing 'W' from 'WhaT is tHis wW') from dual;
2.6 LTRIM函数
- 语法:ltrim(c1[,c2])
c1:表示一个字符串
c2:表示要从左侧截取掉的字符,不写默认为空格
select ltrim('hhWWhhshhhaT is tHis wW','Wh') from dual;
2.7 RTRIM函数
- 语法:rtrim(c1[,c2])
c1:表示一个字符串
c2:表示要从右侧截取掉的字符,不写默认为空格
select rtrim('hhWWhhshhhaT is tHis wW','Wh') from dual;
2.8 REPLACE函数
- 语法:replace(c1,c2[,c3])
将字符串c1中的c2替换为c3,c3为空表示删除
select replace('hhWWhhshhhaT is tHis wW','W') from dual;
select replace('hhWWhhshhhaT is tHis wW','W','-') from dual;
2.9 SUBSTR函数
- 语法:substr(c1,n1[,n2])
c1:表示一个字符串
n1:表示开始截取的位置,可以为负数,但必须小于字符串长度
n2:表示长度,必须大于0,不写默认到最后
select substr(1234567890,4) from dual;
select substr(1234567890,4,3) from dual;
select substr(1234567890,-4,3) from dual;
2.10 INSTR函数
- 语法:
instr(c1,c2[,n1][,n2])
c1:表示一个字符串
c2:表示要查找的字符串
n1:表示开始查找的位置,大于0总左向右,小于0从右向左,不写默认为1
n2:表示要匹配的是查找到的第几个,必须大于0,不写默认为1
select instr('abcdedcbabcd','c') from dual;
select instr('abcdedcbabcd','c',4) from dual;
select instr('abcdedcbabcd','c',4,2) from dual;
2.11 LENGTH函数
- 语法:length©
返回字符串c的长度
select length('abcd字符串') from dual;
select length('') from dual;
3 日期函数
3.1 CURRENT_DATE函数
返回当前系统所在时区的默认时间
select current_date from dual;
3.2 SYSDATE函数
功能与CURRENT_DATE相同,返回当前系统所在时区的默认时间
select sysdate from dual;
3.3 ADD_MONTHS函数
返回指定日期月份+n后的日期
- 语法:add_months(日期,月份差)
select add_months(sysdate,12),add_months(sysdate,-12) from dual;
select add_months('31-8月-2025',1) from dual;
3.4 LAST_DAY函数
返回指定日期所在月的最后一天
select last_day(sysdate) from dual;
select last_day('23-2月-2020') from dual;
3.5 NEXT_DAY
返回指定日期之后的第一个星期的第n天
- 语法:next_day(d,n)
select next_day(sysdate,5) from dual;
select next_day(sysdate,'星期四') from dual;
select next_day('1-8月-2025',7) from dual;
3.6 MONTHS_BETWEEN函数
返回两个日期之间的月份差
- 语法:months_between(d1,d2)
select months_between(sysdate,add_months(sysdate,-1)) from dual;
select months_between(sysdate,add_months(sysdate,1)) from dual;
select months_between('1-9月-2025','31-8月-2025') from dual;
3.7 ROUND函数
对当前日期进行四舍五入到指定精度,不写fmt默认精度为日
- 语法:round(d[,fmt])
select round(sysdate) from dual;
--设置精度为小时
select round(sysdate,'HH24') from dual;
--设置精度为分钟
select round(sysdate,'mi') from dual;
3.8 TRUNC函数
对日期进行裁断,不写fmt裁断单位为日
- 语法:trunc(d[,fmt])
--设置裁断单位为24小时制的小时
select trunc(sysdate,'HH24') from dual;
--设置裁断单位为分钟
select trunc(sysdate,'mi') from dual;
4 转换函数
将指定字符从一种类型转换为另一种,通常这类函数遵循如下惯例:函数名称后面跟着待转换类型以及输出类型。
4.1 TO_CHAR函数
4.1.1 转换字符
将nchar,nvarchar2,clob,nclob类型转换为char类型
- 语法:to_char©
select to_char('AABBCC') from dual;
4.1.2 转换时间
将指定的时间按照指定格式转换为varchar2类型
- 语法:to_char(日期,格式)
select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
4.1.3 转换数值
将指定数值n按照指定格式fmt转换为varchar2类型
- 语法:to_char(数值,格式)
--L货币符号,G999千位分隔符逗号,D99两位小数
select to_char(1000,'L99G999D99MI') from dual;
--L货币符号,最大支持4位整数和2位小数
select to_char(1000,'L9999.99') from dual;
4.2 TO_DATE函数
将char,nchar,varchar2,nvarchar2字符串转换为日期类型
- 语法:to_date(日期,格式)
select to_date('2025-08-01 11:03:09','yyyy-mm-dd hh24:mi:ss') from dual;
insert into emp(EMPNO,HIREDATE,sal) values(2,to_date('1982-2-5','yyyy-mm-dd'),1000);
4.3 TO_NUMBER函数
将char,nchar,varchar2,nvarchar2型字串按照fmt中指定格式转换为数值
select to_number('-100.00', '9G999D99') FROM DUAL;
5 其它辅助函数
5.1 DECODE函数
exp做为初始参数,s做为对比值,相同则返回r,default作为默认返回值
- 语法:decode(exp,s1,r1,s2,r2…,r[,default])
select decode ('a2','a1','true1','a2','true2','default') from dual;
5.2 GREATEST函数
返回序列中的最大值
- 语法:greatest(n1,n2,…nn)
select greatest(15,6,56,31) "Greatest" from dual;
5.3 LEAST函数
返回序列中的最小值
- 语法:least(n1,n2,…nn)
select least(15,6,56,31) "LEAST" from dual;
5.4 NULLIF函数
相同返回c1,不同返回空
- 语法:nullif(c1,c2)
select nullif('a','b'),nullif('a','a') from dual;
5.5 NVL函数
c1不为空返回c1,为空返回c2
- 语法:nvl(c1,c2)
select nvl('a','b') from dual;
select nvl(null,'b') from dual;
5.6 NVL2函数
c1不为空返回c2,为空返回c3
- 语法:nvl2(c1,c2,c3)
select nvl2('a','b','c') from dual;
select nvl2(null,'b','c') from dual;
6 数值型函数
6.1 ABS函数
返回数字的绝对值
- 语法:abs(n)
select abs(-15.03) from dual;
6.2 COS函数
余弦函数
- 语法:cos(n)
select cos(-2) from dual;
6.3 ACOS函数
反余弦函数 -1<= n <=1
- 语法:acos(n)
select acos(-0.9) from dual;
select acos(-1) from dual;
6.4 BITAND函数
两个数字的进制按位与
- 语法:bitand(n1,n2)
select bitand(6,12) from dual;
6.5 CEIL函数
大于等于n的最小整数,向上取整
- 语法:ceil(n)
select ceil(18.3) from dual;
select ceil(-18.3) from dual;
6.6 FLOOR函数
小于等于n的最大整数,向下取整
- 语法:floor(n)
select floor(18.9) from dual;
select floor(-18.9) from dual;
6.7 BIN_TO_NUM函数
二进制转十进制,n的值只能为0或1
select bin_to_num(1) from dual;
select bin_to_num(1,1) from dual;
select bin_to_num(1,0,0,1) from dual;
6.8 SIN函数
正弦函数
- 语法:sin(n)
select sin(3) from dual;
6.9 SINH函数
双曲正弦函数
- 语法:sinh(n)
select sinh(3) from dual;
6.10 ASIN函数
反正弦函数 -1<=n<=1
- 语法:asin(n) 反正弦值
select asin(0.3) from dual;
6.11 TAN函数
正切函数
- 语法:tan(n)
select tan(0.3) from dual;
6.12 TANH函数
双曲正切函数
- 语法:tanh(n)
select tanh(0.3) from dual;
6.13 ATAN函数
反正切函数
- atan(n)
select atan(0.3) from dual;
6.14 EXP函数
e的n次幂
- 语法:exp(n)
select exp(3) from dual;
6.15 LN函数
n的自然对数 n>0
- 语法:ln(n)
select ln(0.9) from dual;
6.16 LOG函数
以n1为底n2的对数 n1>0且n1!=1,n2>0
- 语法:log(n1,n2)
select log(2,8) from dual;
6.17 POWER函数
n1的n2次方
- 语法:power(n1,n2)
select power(2,3) from dual;
6.18 SIGN函数
n<0返回-1,n>0返回1,n=0返回0
- 语法:sign(n)
select sign(3),sign(-3),sign(0) from dual;
6.19 SQRT函数
n的平方根
- 语法:sqrt(n)
select sqrt(9) from dual;