Oracle基本函数总结

(一)字符函数

  Upper

  
SELECT Upper ('abcde') FROM dual  
结果:ABCDE

  Lower

  
SELECT lower('ABCDE') FROM dual 
结果:abcde

  Initcap

  
SELECT Initcap ('AAA') FROM dual 
结果:Aaa

  
SELECT Initcap ('aaa') FROM dual 
结果:Aaa

  Concat

  
SELECT Concat ('a', 'b') FROM dual 
结果:ab

  
Select 'a' || 'b' from dual 
结果:ab

  Substr

  
Select substr('abcde',0,3) from dual 
结果:abc

  
Select substr('abcde',-2,3) from dual 
结果:de

  第二个参数为字符串的第几位,默认从0开始。当为负数时,是从右侧开始。第三个参数为要取得字符串的总长度。

  Length

  
Select length('abcde') from dual 
结果:5

  Replace

  
Select replace('abcde','a','A') from dual 
结果:Abcde

  Instr

  
Select instr('Hello World','W') from dual 
结果:8

  
Select instr('Hello World','w') from dual 
结果:0

  如果在第一个参数中存在第二个参数,则返回第一个遇到的匹配参数的位置,该方法区分大小写。

  Lpad

  
select lpad('Smith',10,'*') from dual 
结果:*****Smith

  Rpad

  
select rpad('Smith',10,'*') from dual 
结果:Smith*****

  Trim

  
select trim(' Mr Smith ') from dual 
结果:Mr Smith

  (二)数值函数

  Round

  
select round(412,-2) from dual;
结果:400

  
select round(412.713) from dual;
结果:413

  
select round(412,2) from dual;
结果:412

  
select round(412.713,2) from dual;
结果:412.71

  取整运算,第二个参数指定了取小数点后的几位,如果是5则进一。

  Mod

  
select Mod(198,2) from dual 
结果:0

  Trunc

  
select trunc(412.13,-2) from dual  
结果:400

  
select trunc(412.13,2) from dual   
结果:412.13

  
select trunc(412.13,1) from dual   
结果:412.1

  
select trunc(412.53) from dual     
结果:412

  取整运算,第二个参数指定了取小数点后的几位,不进位。

  (三)日期函数

  Months_between

  
select months_between(sysdate+35,sysdate) from dual

  结果:1.16129032258065

  用第一个参数的时间减去第二个参数的时间,得到月份的差。

  Add_months

  
select add_months(sysdate,1) from dual

  当前月份加了一个月

  interval

  
select   sysdate   +   interval   '3 '   year   from   dual

  当前日期加了三年

  
select   sysdate   +   interval   '3-2 '   year   to   month   from   dual


  当前日期加了三年两个月

  
select   sysdate   +   interval   '10   2:10 '   day   to   minute   from   dual


  当前日期加了 十天两小时十分钟

  Next_day

  
select next_day(sysdate,'星期一') from dual

  选择了下一个星期一的日期

  Last_day

  
select last_day(sysdate) from dual

  选择了这个月的最后一天

  (四)转换函数

  To_char

  
select to_char(sysdate,'yyyy-MM-dd') from dual; 
结果:2010-10-30

  To_number

  
select to_number('13')+to_number('14') from dual;
结果:27

  To_date

  
Select to_date('2012-1-1','yyyy-MM-dd') from dual;
结果:2012-1-1

  (五)通用函数

  NVL

  
select nvl('string',0) from dual 
结果:string

  
select nvl('',0) from dual 
结果:0

  NullIF

  
select nullif('abc','abc') from dual 
结果:空

  
select nullif('abc','abcd') from dual 
结果:’abc

  NVL2

  
select nvl2('a','b','c') from dual 
结果:b

  
select nvl2('','b','c') from dual 
结果:c

  如果第一个参数不为空,则返回第二个参数;否则,返回第三个参数

  Coalesce

  
select COALESCE('','','abc','') from dual 
结果:abc

  
select COALESCE('','','','') from dual     
结果:空

  依次考察各个参数,如有非空则停止并返回该值。

  Case表达式

  
select case 4

  when 10 then

  '财务部'

  when 20 then

  '研发部'

  when 30 then

  '销售部'

  else

  '未知部门'

  end 部门

  from dual


  结果:未知部门

  Decode表达式

  
select decode(10, 10, '财务部', 20, '研发部', 30, '销售部', '未知部门') 部门

  from dual;
结果:财务部

  
select decode(2,10,'财务部',decode(3,20,'研发部',decode(4,30,'销售部','未知部门'))) from dual; 
结果:未知部门

  第一个参数是否等于第二个参数,如果等于,则返回第三个参数,否则返回第四个参数,可用于行转列。
引自:http://oracle.chinaitlab.com/induction/832352.html


日期型函数
sysdate 当前日期和时间
select sysdate from dual;

last_day  本月最后一天
select last_day(sysdate) from dual;

add_months(d,n) 当前日期d后推n个月
select add_months(sysdate,2) from dual;

months_between(d,n) 日期d和n相差月数
select months_between(sysdate,to_date('20020812','YYYYMMDD')) from dual;

next_day(d,day) d后第一周指定day的日期 select next_day(sysdate,'Monday') from dual;
day 格式  有  'Monday' 星期一 
         'Tuesday' 星期二
'wednesday'  星期三
'Thursday' 星期四
'Friday' 星期五
'Saturday' 星期六
         'Sunday' 星期日


特殊格式的日期型函数
Y或YY或YYY 年的最后一位,两位,三位
select to_char(sysdate,'YYY') from dual;

Q 季度,1-3月为第一季度    
select to_char(sysdate,'Q') from dual;

MM  月份数           
select to_char(sysdate,'MM') from dual;

RM 月份的罗马表示
select to_char(sysdate,'RM') from dual; 
IV
month 用9个字符表示的月份名
select to_char(sysdate,'month') from dual;
ww 当年第几周         
select to_char(sysdate,'ww') from dual;

w 本月第几周         
select to_char(sysdate,'w') from dual;

DDD 当年第几天,一月一日为001 ,二月一日032
select to_char(sysdate,'DDD') from dual;

DD 当月第几天
select to_char(sysdate,'DD') from dual;

D 周内第几天
select to_char(sysdate,'D') from dual; 
如 sunday
DY 周内第几天缩写       
select to_char(sysdate,'DY') from dual; 
如 sun
hh12 12小时制小时数       
select to_char(sysdate,'hh12') from dual;

hh24 24小时制小时数       
select to_char(sysdate,'hh24') from dual;

Mi 分钟数           
select to_char(sysdate,'Mi') from dual;

ss 秒数            
select to_char(sysdate,'ss') from dual;

select to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') from dual;

引自:http://hi.baidu.com/zmc149158339/blog/item/9953e3ecc542a54978f055b2.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值