translate方法替换和被替换字符是一一对应的。
*/
select translate('oracleoracle','ole','123') from dual;--1rac231rac23
select translate('oracleoracle','ole','12') from dual;--1rac21rac2
--replace
/*
replace(str,substr1,substr2)
将str中的所有substr1子串用substr2替换
*/
--自己体会和translate的区别
--单一字符和translate的效果相同
select replace('1111abc','1','A') from dual;--AAAAabc
select replace('1111abc','1') from dual;--abc
--多个字符就不同喽
select replace('1111abc','11','AB') from dual;--ABABabc
select translate('1111abc1','11','AB') from dual;--AAAAabcA
--translate是针对一个字符一个字符的替换,replace是字符子串的替换
日期时间函数
Sql代码
--to_date(str,format)将字符串转换成日期
/*
format参数:
YYYY 4位数字年份
YYY,YY,Y年份的最后3|2|1为数
MM 月份(01-12)
DD day of month(1-31)
HH=HH12 :hour of day(1-12)
HH24 :hour of day(0-23)
MI :minute(0-59)
ss:second(0-59)
*/
select to_date('2011-10-01:22:35:24','YYYY-MM-DD:HH24:MI:SS') from dual;
--to_char(date,format)将日期转换成字符串
select to_char(sysdate,'MM-DD-YY') from dual;--08-22-11
--add_months(date,months)加整个月数
select sysdate,add_months(sysdate,3),add_months(sysdate,-2) from dual;
--last_day(date) 计算date所在时间月份的最后一天
select last_day(to_date('1988/08/08','yyyy/mm/dd')),last_day(sysdate) from dual;--1988-8-31,2011-8-31 22:49:23
--当前时间
select current_date,current_timestamp, sysdate from dual;
/* 2011-8-22 23:00:24 ,22-8月 -11 11.00.23.765000 下午 +08:00,2011-8-22 23:00:23*/
--时区 没大用吧
select dbtimezone from dual;
--从日期中提取信息
select extract(year from sysdate),extract(month from sysdate),extract(day from sysdate) from dual;
--返回相差的月数
select months_between(sysdate,to_date('2011-02-15','YYYY-MM-DD')) from dual;
其他
Sql代码
--nvl(exp1,exp2) 如果exp1=null,返回exp2,否则返回exp1
select nvl(null,1),nvl(2,1) from dual;--1,2
--nvl2(exp1,exp2,exp3) 如果exp1=null,返回exp3;exp1 !=null,返回 exp3
select nvl2(null,1,2),nvl2(3,1,2) from dual;--2,1
--coalesce(exp1,exp2,exp3...)返回第一个不是null的exp的值
select coalesce(null,null,null,null,2,null,5) from dual;--2
--cast类型转换函数
select cast(2345 as varchar2(10)), cast(sysdate as varchar2(30)) from dual;
--decode(exp,search1,result1,search2,result2...,default);
/*
exp:被操纵对象
如果exp=searchN字符串,就返回resultN,和case语句执行差不多
default如果找不到就默认值
*/
select decode('100','99','九九','100','一百','101','一百零一',0) from dual;--一百
本文出自“艹鸟”