Oracle单行函数整理
1.字符函数
- Upper():根据当前字符集映射的所有字符更改为大写
select * from emp where ename=upper('smith');--返回SMITH
- lower():根据当前字符集映射的所有字符更改为小写
select * from emp where ename=lower('SMITH');--返回smith
- Initcap():返回字符串并将字符串的第一个字母变为大写
select initcap(ename) from emp;
- Concat():拼接函数两字符串拼接起(注意:只能有两个参数)
select concat('A','B') from 表名;--返回'AB'
- Substr():截取字符串
select substr('abcdef',2) from dual; --结果为:bcdef 从2开始全部返回
select substr('abcdef',2,3) from dual;--结果为:bcd 从2开始返回3位
- Length():查询长度
select length(ename) from emp;
- Replace():替换函数
select replace(ename,'a','A') from emp;--使用字母“a”替换掉姓名中的所有字母“A”
- Instr():返回要截取的字符串在源字符串中的位置
select instr('Hello World','or') from dual; --返回8
- Lpad():左侧填充
lpad('Smith',10,'*') --*****Smith
- Rpad():右侧填充
rpad('Smith',10,'*') --Smith*****
- Trim():过滤首尾空格
trim(' Mr Smith ') --Mr Smith
2.数值函数
- Round(x[,y])
- 功能:返回四舍五入后的值 。
- 参数:x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位。
- 返回:数字
select round(5555.6666,2.1),round(5555.6666,-2.6),round(5555.6666)
from dual;
--返回:5555.67 , 5600 , 5556
- Mod(numer1,number2)
Select mod(10,3), mod(10,2), mod(10,4) from dual;
--返回:1 ,0 , 2
- Trunc(x[,y])
- 功能:返回x按精度y截取后的值
- 参数:x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则截取到y位小数,如果y小于0则截取到小数点向左第y位,小数前其它数据用0表示。
- 返回:数字
select trunc(5555.66666,2.1),trunc(5555.66666,-2.6),trunc(5555.033333) from dual;
--返回: 5555.66 , 5500 , 5555
3.日期函数
- Months_between():返回两个日期之间的月份数
select months_between(
to_date('20090228', 'yyyymmdd'), to_date('20080228', 'yyyymmdd')
) as months from dual;
--返回:12
- Add_months():输入日期上加上指定的几个月返回一个新的日期,如果给出一负数,返回值日期之前几个月日期
add_months(to_date('29-Feb-96','d-mon-yyyy'),-12.99)
--返回: 28-Feb-95
add_months(to_date('15-Nov-1961','d-mon-yyyy'),1)
--返回:15-Dec-1961
- Next_day(date,char):指定时间的下一个星期几(由char指定)所在的日期,char也可用1~7替代,1表示星期日,2代表星期一 ,还可以是星期一、星期二……
select next_day(sysdate,'星期日') from dual;
- Last_day(date):返指定期应月份
last_day(to_date('1999.11.29','yyyy.mm.dd'))
--返回:1999年11月31
4.转换函数
- To_char():把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串
select to_char(sysdate,'yyyy') from dual;
select to_char(sysdate,'fmyyyy-mm-dd') from dual;
select to_char(sal,'L999,999,999') from emp;
select to_char(sysdate,’D’) from dual;--返回星期
- To_number():将字符串转换为number类型
select to_number('13')+to_number('14') from dual;
- To_date():将字符串转换为日期格式
Select to_date(„20090210‟,‟yyyyMMdd‟) from dual;
5.通用函数
- Nvl(string, replace_with):如果string是空值,能用replace_with替代
select nvl(comm,0) from dual;
- Nullif(exp1,exp2):如果表达式 exp1 与 exp2 的值相等则返回 null,否则返回 exp1 的值
select nullif(sal,8888) from dual;
- Nvl2(E1, E2, E3):如果E1为NULL,则函数返回E3,若E1不为null,则返回E2
select nvl2(sal,8888,9999) from dual;
- Coalesce(exp1,exp2,… ,expN):依次考察各参数表达式,遇到非 null 值即停止并返回该值。
select coalesce(comm, 1, 0) from dual;
- CASE表达式:实现多路分支结构
select empno, ename, sal,
case deptno
when 10 then '财务部'
when 20 then '研发部'
when 30 then '销售部'
else '未知部门'
end 部门
from emp;
- DECODE()函数:实现多路分支结构
select empno, ename, sal,
decode(
deptno,
10, '财务部',
20, '研发部',
30, '销售部',
'未知部门'
) 部门
from emp;
注:Oracle初学者整理,并不完全,日后将更加深入的了解。