Oracle数据库SQL总结(2)
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)
相关新闻>>
- 发表评论
-
- 最新评论 更多>>