oracle中的常用函数

来源:互联网 发布:linux的rename命令 编辑:程序博客网 时间:2024/05/15 11:31

1===========字符函数

·lower(char)

·upper(char)

·length(char)

·substr(char,begin,length) 

这里要注意一下下的是:begin 是从第几个开始,length是指取多长,不要和javasubstring混淆了,java中的substring中的最后一个参数是取到第几个位置

·replacechar1,char2,char3

char1中的char2字符替换成char3字符

·instr(char, ch , n , m) --找到chchar中的位置,返回的是一个整数,表示出现的位置

 n : char中的第几个字符开始找,可以是负数,如果是负数的话,那么从最后面开始找,

m : 找第几次出现的位置
demo: 

SQL> SELECT  INSTR('CORPORATE FLOOR','OR', -1, 2)  from dual;

找到‘OR’在 'CORPORATE FLOOR'中出现的位置,但是是从最后面开始找,从前面数第一个出现的位置:

结果是 :  5

2========数值函数,

·roundn[, m ]): 四舍五入函数,是保留的小数位,如果是负数的话,就是整数位

  SQL> select round(1203.352,-1) from dual;  -- 1200

·trunc(n[, m]) : 只舍不入函数,和round一样,只是这个函数不会进行五入的操作

·mod(n,m) :取余

·floor(n):不大于的最大整数

·ceil(n) :不小于的最小整数

其他的一些不常用的数值函数请查阅文档。。。

3=========日期函数

·sysdate : 系统时间

·add_months(date, n ) : 增加月份

?显示入职超过20年的员工信息

SQL>select * from emp where sysdate > add_months(hiredate, 240); --增加月份

·last_day(date) : 显示每个月的最后一天的日期

   ?查询每个月的最后三天入职的员工信息

   SQL> select * from emp where hiredate > last_day(hiredate)-3 ;

·to_date(char,format): 在字符串转换为固定日期格式

SQL > insert into emp values(....., to_date('1990-02-12','yyyy-mm-dd') ,....);

·to_char(sysdate,'yyyy') 得到年

  to_char(sysdate,'MM') 得到月

  to_char(sysdate,'Q') 得到季度,1-3为第一季度

  to_char(sysdate,'ddd') 得到一年中的第几天

  to_char(sysdate,'dd') 得到一个月中的第几天

  to_char(sysdate,'d') 得到一周中的第几天

  to_char(sysdate,'dy') 得到中文的星期几,如:星期六

  to_char(sysdate,'ww') 得到当年的第几周

  to_char(sysdate,'w') 得到当月的第几周

  to_char(sysdate,'hh24') 得到小时,24小时制的

  to_char(sysdate,'hh12')

  to_char(sysdate,'mi') 得到分钟

  to_char(sysdate,'ss') 得到秒

?显示入职超过20年的员工信息

SQL>select * from emp where to_char(hiredate+ 20,'yyyy')  < to_char(sysdate,'yyyy') ;

4,转换函数

oracle中有些情况下会自动转换类型:

如:

· create table test(tid number(4));

   insert into test values('1001'); -- oracle 会把‘1001’转换为1001

 ·create table test(tid varchar2(4));

   insert into test values(1001); -- oracle 会把 1001 转换为‘1001

但是很多情况下,oracle需要借助转换函数来转换:

如:

  to_date(); --在上面的日期函数的时候有提到

  to_char(); -- 上面在日期函数的时候有说道

SQL> select ename,to_char(sal,'L99,999.99') from emp ; ---为什么是五个9,因为sal字段的长度是number(7,2) ;

5,======系统函数