2014-12-09 BaoXinjian
一、字符函数
1. LOWER (strexp) - 返回字符串,并将所有的字符小写.
select lower(‘ABCDE‘) from dual
2. UPPER (strexp) 返回字符串,并将所有的字符大写.
select upper(‘abcdf‘) from dual
3.INITCAP(strexp) 将字符串的(每个单词的)第一个字母变为大写,后面的小写;
select initcap(‘ source fore‘) from dual select initcap(‘ SOURCE FORE‘) from dual -- Source Fore(如果都是大写会自动将第一个字母变为大写其他的小写)
4.CONCAT(strexp, strexp): 连接两个字符串
select concat(first_name,last_name) from employees
5.substr(str,start_index,length): 从指定的位置截取指定长度的字符串
select substr(‘abcdefg‘,2,3) from dual
6.LENGTH(strexp):返回字符串的长度
select length(‘abcdef‘) from dual
7.INSTR(C1,C2,I,J): 在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1:搜索的字符
C2:要搜索的字符
I:表示从哪个位置开始查找
J:查找第几次出现
select instr(‘aborcdoryuklhorp‘,‘or‘,1,2) from dual ---7 select instr(‘aborcdoryuklhorp‘,‘or‘,6,2) from dual ---14
8.LPAD( string1, padded_length, [ pad_string ] ) 在列的左边粘贴字符
select lpad(‘acd‘,8) from dual
9.RPAD(粘贴字符) RPAD? 在列的右边粘贴字符
select rpad(‘acd‘,8,‘‘) from dual select rpad(‘acdefghijklm‘,8,‘‘) from dual
10.trim(str):截取字符串两端特殊字符
select ‘ abd ‘ from dual select trim(‘ abd ‘) from dual
11.replace(str,search_str[,replace_str]): 将每次在str中出现的search_str用replace_str替换
select replace(‘HELOVEYOU‘,‘HE‘,‘I‘) from dual
二、数学函数
1.round:传回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。
select round(3000.926) from dual --3001 --小数部分是两位 select round(3000.926,2) from dual --3000.93
2.TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,
--只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。 select trunc(3000.926) from dual --3000 select trunc(3000.926,2) from dual --3000.92
3.mod(number1,number2)两个数值相除并返回其余数。运算符执行 number1 除以 number2 操作
select mod(1600,300) from dual --100
三、转化函数
1.TO_CHAR(date,‘fmt‘) : 是字符类型的函数,转化日期为字符格式(‘fmt‘)
- 必须用单引号括起来,并且是大小写敏感
- 可包含任何有效的日期格式
- fmt值的宽度正好能容纳所有的有效数字
2.修改当前的语言环境为中文
alter session set nls_language=‘SIMPLIFIED CHINESE‘
--输入当前的系统日期,格式为 yyyy-mm-dd select sysdate from dual select to_char(sysdate,‘yyyy-mm-dd‘) from dual --输入当前的系统日期,格式为 yyyy-mon-dd select to_char(sysdate,‘yyyy-mon-dd‘) from dual --输入当前的系统日期,格式为 yyyy-month-dd select to_char(sysdate,‘yyyy-month-dd‘) from dual --输入当前的系统日期,格式为 yyyy-mon-dd-day select to_char(sysdate,‘yyyy-mon-dd day‘) from dual --输入当前的系统日期,格式为 yyyy-mon-dd-dy select to_char(sysdate,‘yyyy-mon-dd-dy‘) from dual --输入当前的系统日期,格式为 yyyy-mon-dd-dy-d select to_char(sysdate,‘yyyy/mon/dd/dy/d‘) from dual --ddspth 日期的英文显示 --输入当前的系统日期,格式为 yyyy-mon-ddspth select to_char(sysdate,‘yyyy-mon-ddspth‘) from dual --2010-4月 -seventeenth
3.修改为英文环境(此语句只对当前的窗口有效,当窗口关闭虚重新设置)
alter session set nls_language=AMERICAN; --输入当前的系统日期,格式为 yyyy-mm-ddselect to_char(sysdate,‘yyyy-mm-dd‘) from dual --输入当前的系统日期,格式为 yyyy-mon-dd select to_char(sysdate,‘yyyy-mon-dd‘) from dual --2010-apr-17 --输入当前的系统日期,格式为 YYYY-MON-DD select to_char(sysdate,‘yyyy-MON-dd‘) from dual --2010-APR-17 --输入当前的系统日期,格式为 YYYY-MONTH-DD select to_char(sysdate,‘YYYY-MONTH-DD‘) from dual --输入当前的系统日期,格式为 yyyy-mon-dd-day select to_char(sysdate,‘yyyy-mon-dd-day‘) from dual select to_char(sysdate,‘yyyy-mon-dd-DAY‘) from dual --2010-apr-17-SATURDAY --输入当前的系统日期,格式为 yyyy-mon-dd-dy select to_char(sysdate,‘yyyy-mon-dd-dy‘) from dual --2010-apr-17-sat select to_char(sysdate,‘yyyy-mon-dd-DY‘) from dual --2010-apr-17-SAT
4.ddspth 不分中英文环境 日期的英文显示
--输入当前的系统日期,格式为 yyyy-mon-ddspth select to_char(sysdate,‘yyyy-mon-ddspth‘) from dual --2010-apr-seventeenth --小时 分 秒 --输入当前的系统日期,格式为 yyyy-mon-dd HH24:MI:SS select to_char(sysdate,‘yyyy-mon-dd HH24:MI:SS‘) from dual --输入当前的系统日期,格式为 dd-mon-yyyy SS:HH24:MI(格式没有顺序) --注意:使用to_char函数转化日期--->字符 格式没有顺序 select to_char(sysdate,‘dd-mon-yyyy SS:HH24:MI‘) from dual --输入当前的系统日期,格式为 yyyy-mon-dd HH24:MI:SS AM(PM) --增加AM PM --在这个格式中AM PM没有区别 ,表达的含义是一致的 select to_char(sysdate,‘yyyy-mon-dd HH24:MI:SS AM‘) from dual select to_char(sysdate,‘yyyy-mon-dd HH24:MI:SS PM‘) from dual select to_char(sysdate,‘yyyy-mon-dd HH24:MI:SS PM‘) from dual --输入当前的系统日期,格式为 dd of month (19 of 1月) --可以在格式中增加字符串,字符串用""引起来 select to_char(sysdate,‘dd of month ‘) from dual
5.to_date(char,fmt) 转化字符为日期
第一个参数:符合日期格式的字符 第二个参数:格式(同to_char函数转化日期的格式) alter session set nls_language=‘SIMPLIFIED CHINESE‘ alter session set nls_language=AMERICAN; --转化2008-04月-18这个字符为日期 select to_date(‘2008-4月-18‘,‘yyyy-mon-dd‘) from dual; select to_date(‘4月-18-2008‘,‘mon-dd-yyyy‘) from dual;
6.TO_CHAR(number,‘fmt‘):是字符类型的函数,转化数字为字符
四、日期函数
1. 计算2008-4月-1日和2008-8月-10日相差多少个月--使用months_between(date1,date2)函数
select months_between(to_date(‘2008-4月-01‘,‘yyyy-mon-dd‘),to_date(‘2008-8月-10‘,‘yyyy-mon-dd‘)) from dual select months_between(to_date(‘2008-8月-10‘,‘yyyy-mon-dd‘),to_date(‘2008-4月-01‘,‘yyyy-mon-dd‘)) from dual
2. 相差多少个月四舍五入到整数
select round(months_between(to_date(‘2008-8月-10‘,‘yyyy-mon-dd‘),to_date(‘2008-4月-01‘,‘yyyy-mon-dd‘)))from dual --给出日期2008-4月-01 计算六个月后的日期 --使用Add_months(date1,number) select add_months(to_date(‘2008-4月-01‘,‘yyyy-mon-dd‘),6) from dual
3. 给出日期date和星期x之后计算下一个星期的日期--使用NEXT_DAY(date,‘day‘)
select next_day(to_date(‘2010-4月-01‘,‘yyyy-mon-dd‘),‘星期三‘) from dual
4. 计算指定日期所在月份的最后一天的日期--使用last_day(date)
select last_day(to_date(‘2010-3月-01‘,‘yyyy-mon-dd‘)) from dual
Thanks and Regards
参考: http://blog.163.com/jd_wangchunhe/blog/static/89945993201031915124106/