Oracle数据库SQL总结(2)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-25 11:37 点击:

END;

3 Oracle中经常使用的函数

3.1场景:按照用户设定的定时器时间段,过滤出数据后Update下一执行时间。例如用户设定是邮件发送频率为每月15号 12:00:00发送,则计算出下一发送时间点为当前发送时间+1个月;设定频率为每周一 09:00:00发送,则计算出下一发送时间+一周

3.2解决方法:

1)、ADD_MONTHS(x,y)函数,平时我使用的场景也就是对月份进行加减时使用ADD_MONTHS函数,其中y若是负整数表示对月份的减操作;y是正整数表示对x月份添加y个月


Sql代码 
SELECT ADD_MONTHS(SYSDATE, -1) FROM DUAL 

SELECT ADD_MONTHS(SYSDATE, -1) FROM DUAL2)、NEXT_DAY(x,day)返回x日期下一个day的日期,新手需要注意的是这里的day指的是星期。1表示星期天、2表示星期一,以此类推。


Sql代码 
SELECT NEXT_DAY(SYSDATE, 2) FROM DUAL; 

SELECT NEXT_DAY(SYSDATE, 2) FROM DUAL; 返回从当前时间开始计算下一星期一的日期。

3)、如果是+1天或是-1天的操作可以直接对日期进行+-操作,like this


Sql代码 
SELECT SYSDATE-1 FROM dual  

SELECT SYSDATE-1 FROM dual oracle支持对日期进行运算,运算时是以天为单位进行的。

4)、LAST_DAY(x) 获取x月份中的最后一天

5)、MONTHS_BETWEEN(x,y);x>y返回正数,表示x和y之间相隔的月份数(实际项目中没使用过,暂时不做太多记录)。

字符串处理函数:

6)、nvl(x,value),如果x is null 则返回value中的值,否则返回x;

7)、length(x),返回x的字符长度;

8)、substr(x,start,length) 截取字符串,对字符串x进行截取,从start开始截取的长度为length;如果需要取字符串的后面几位可以这样写:


Sql代码 
SELECT SUBSTR(TEST, -2) FROM DUAL; 

 SELECT SUBSTR(TEST, -2) FROM DUAL; 返回最后两位字符 ST

 

 

4、Oracle中伪列的使用技巧

4.1场景:利用oracle中的伪列进行分页是一种简单方便的分页手段有些场景中我们也可以使用伪列来代替组函数,从而巧妙的实现过滤要求。

1 )  利用伪列取出工资最高的第6到第10名雇员的记录

 


Sql代码 
SELECT *  
  FROM (SELECT ROWNUM RN, TEMP.*  
          FROM (SELECT E.ENAME, E.SAL  
                  FROM EMP E  
                 WHERE ROWNUM <= 10  
                 ORDER BY E.SAL DESC) TEMP)  
 WHERE RN > 5 

 SELECT *
   FROM (SELECT ROWNUM RN, TEMP.*
           FROM (SELECT E.ENAME, E.SAL
                   FROM EMP E
                  WHERE ROWNUM <= 10
                  ORDER BY E.SAL DESC) TEMP)

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Table函数使用简介
  • Oracle数据库Constraint约束的常用操作及异常处理
  • Bulk Collect性能分析(zz)
  • export/import的使用
  • OCP043第十五讲 Database Security
  • ORACLE10gr2数据导入MySQL方案
  • oracle 让sys用户可以使用isqlplus
  • 在oracle数据库下使用iSQL*Plus DBA访问数据库
  • Oracle行列转换小结
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1