oracle业务中经常用到的方便函数

在业务中,经常会遇到各种转换问题和计算问题,以及排除空值捕获异常等问题,其实很多工作,都可以交给数据库自己来做,这样,可以很大程度上美化代码,并在一定程度上,提高代码运行的效率,以下是我收集并总结的常用oracle函数,个人认为很好用,与大家分享,具体如下:

SELECT ROUND(23.56),ROUND(23.56,1),ROUND(23.56,-1) FROM DUAL; --24、23.6、20四舍五入
SELECT MOD(24,5) FROM DUAL;--4,取余
SELECT MOD(24,0) FROM DUAL;--25,除数为5时返回元数据
SELECT TRUNC(23.56),TRUNC(23.56,1),TRUNC(23.56,-1) FROM DUAL;--23、23.5、20截取
SELECT LOWER('WhaT is tHis') FROM DUAL;--转小写
SELECT UPPER('WhaT is tHis') FROM DUAL;--转大写
SELECT LPAD('WhaT is tHis',5),LPAD('WhaT is tHis',25),LPAD('WhaT is tHis',25,'-') FROM DUAL; --截取,不足填充
SELECT RPAD('WhaT is tHis',5),RPAD('WhaT is tHis',25),RPAD('WhaT is tHis',25,'-') FROM DUAL; --方向与上相反
SELECT TRIM(' WhaT is tHis ') FROM DUAL;--去除头尾空格
SELECT LTRIM('WWhhhhhaT is tHis w W','Wh') FROM DUAL; --递归从左截取‘’内的内容,默认为空格,上面的也可以带参数
SELECT RTRIM('WWhhhhhaT is tHis w W','W w') FROM DUAL; --与上相反
SELECT REPLACE('WWhhhhhaT is tHis w W','W','-') FROM DUAL; --替换
SELECT SUBSTR('What is this',5,3) FROM DUAL; --截取,从左边从0开始
SELECT SUBSTR('What is this',-5,3) FROM DUAL;--从右边从-1开始
SELECT INSTR('abcdefg','e',-3) FROM DUAL; --5返回位置,从1开始
SELECT LENGTH('A123中') FROM DUAL; --字符串长度,中文长度为2
SELECT ADD_MONTHS(sysdate,12),ADD_MONTHS(sysdate,-12) FROM DUAL;--月份计算
SELECT SYSDATE,CURRENT_DATE FROM DUAL;--当前时间
SELECT last_day(SYSDATE) FROM DUAL;--当月最后一天的时间
SELECT NEXT_DAY(SYSDATE,6) FROM DUAL; --当前日期后一个n的日期
SELECT NEXT_DAY(SYSDATE,'星期日') FROM DUAL; --当前日期后一个n的日期
SELECT months_between(SYSDATE, sysdate),months_between(SYSDATE, add_months(sysdate, -1)),months_between(SYSDATE, add_months(sysdate, 1))FROM DUAL;--月差
SELECT ROUND(SYSDATE,'HH24') FROM DUAL;SELECT TRUNC(SYSDATE) FROM DUAL; --日期截取,参数表示精度
SELECT TO_CHAR(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM DUAL; --转换字符串
SELECT TO_DATE('2007-8-23 23:25:00', 'yyyy-mm-dd hh24:mi:ss') FROM DUAL; --字符串转日期
select decode('a2','a1','true1','a2','true2','default') from dual; --增强型的if else
SELECT NVL(null, '12') FROM DUAL; --逻辑等价于IF c1 is null THEN c2 ELSE c1 END
SELECT NULLIF('a','b'),NULLIF('a','a') FROM DUAL; --逻辑等价于:CASE WHEN c1 = c2 THEN NULL ELSE c1 END 
select nvl2('a', 'b', 'c') isNull,nvl2(null, 'b', 'c') isNotNull from dual; --3元式
SELECT ABS(-1000000.01) FROM DUAL; --绝对值
SELECT COS(-2) FROM DUAL;SELECT ACOS(0.9) FROM DUAL;--余弦与反余弦
SELECT ceil(18.2) FROM DUAL; --CEIL(n) 返回大于或等于n的最小的整数值 
SELECT FLOOR(2.2) FROM DUAL;--FLOOR(n) 返回小于等于n的最大整数值 
SELECT concat('aa','bb') FROM DUAL; --链接字符串
SELECT CURRENT_TIMESTAMP(3) FROM DUAL;SELECT LOCALTIMESTAMP(3) FROM DUAL;  --毫秒级的时间
select sysdate, sysdate+numtodsinterval(1,'hour') from dual ;--小时计算
select sysdate, sysdate+numtodsinterval(50,'minute') from dual ;--分钟计算
select sysdate, sysdate+3 from dual ;--天数计算
select sysdate, sysdate+numtodsinterval(45,'second') from dual ;--秒计算

猜你喜欢

转载自blog.csdn.net/yanyuegongzuoshi/article/details/51316856