您的位置:首页 > 数据库 > 其它 > 正文

plsql常用函数

更多 时间:2014-12-16 类别:数据库 浏览量:1696

plsql常用函数

plsql常用函数

一、日期函数

 

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
    
    		
  •  

    二、字符函数

     

    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、TO_CHAR(date,'fmt') : 转化日期为字符格式

     

    • 必须用单引号括起来,并且是大小写敏感
    • 可包含任何有效的日期格式
    • fmt值的宽度正好能容纳所有的有效数字

     

  • 
    --输入当前的系统日期,格式为 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
    
    alter session set nls_language=AMERICAN;
    
    --输入当前的系统日期,格式为 yyyy-mm-dd
    select 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
    
    --输入当前的系统日期,格式为 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
    
    		
  • 2、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;
    
    		
  • 3、TO_CHAR(number,'fmt'):转化数字为字符

     

    四、数学函数

     

    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

     

    标签:plsql