首页 > 代码库 > PLSQL_基础系列8_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR

PLSQL_基础系列8_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR

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 dualselect 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  ---7select 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 dualselect rpad(acdefghijklm,8,‘‘) from dual

 

10.trim(str):截取字符串两端特殊字符

select     abd      from dualselect   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   --3000select 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-ddselect sysdate from dualselect to_char(sysdate,yyyy-mm-dd) from dual--输入当前的系统日期,格式为 yyyy-mon-ddselect to_char(sysdate,yyyy-mon-dd) from dual--输入当前的系统日期,格式为 yyyy-month-ddselect to_char(sysdate,yyyy-month-dd) from dual--输入当前的系统日期,格式为 yyyy-mon-dd-dayselect to_char(sysdate,yyyy-mon-dd day) from dual--输入当前的系统日期,格式为 yyyy-mon-dd-dyselect to_char(sysdate,yyyy-mon-dd-dy) from dual--输入当前的系统日期,格式为 yyyy-mon-dd-dy-dselect to_char(sysdate,yyyy/mon/dd/dy/d) from dual--ddspth 日期的英文显示--输入当前的系统日期,格式为 yyyy-mon-ddspthselect to_char(sysdate,yyyy-mon-ddspth) from dual  --2010-4月 -seventeenth

 

3.修改为英文环境(此语句只对当前的窗口有效,当窗口关闭虚重新设置)

alter session set nls_language=AMERICAN;
--输入当前的系统日期,格式为 yyyy-mm-dd
select to_char(sysdate,yyyy-mm-dd) from dual
--输入当前的系统日期,格式为 yyyy-mon-ddselect to_char(sysdate,yyyy-mon-dd) from dual --2010-apr-17--输入当前的系统日期,格式为 YYYY-MON-DDselect to_char(sysdate,yyyy-MON-dd) from dual --2010-APR-17--输入当前的系统日期,格式为 YYYY-MONTH-DDselect to_char(sysdate,YYYY-MONTH-DD) from dual
--输入当前的系统日期,格式为 yyyy-mon-dd-dayselect to_char(sysdate,yyyy-mon-dd-day) from dualselect to_char(sysdate,yyyy-mon-dd-DAY) from dual --2010-apr-17-SATURDAY--输入当前的系统日期,格式为 yyyy-mon-dd-dyselect to_char(sysdate,yyyy-mon-dd-dy) from dual --2010-apr-17-satselect to_char(sysdate,yyyy-mon-dd-DY) from dual --2010-apr-17-SAT

 

4.ddspth 不分中英文环境 日期的英文显示

--输入当前的系统日期,格式为 yyyy-mon-ddspthselect to_char(sysdate,yyyy-mon-ddspth) from dual  --2010-apr-seventeenth--小时 分 秒--输入当前的系统日期,格式为 yyyy-mon-dd HH24:MI:SSselect 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 CHINESEalter 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/

PLSQL_基础系列8_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR