Oracle单行函数整理

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初学者整理,并不完全,日后将更加深入的了解。

你可能感兴趣的:(Oracle学习笔记)