Oracle 常用函数总结(持续更新)

LOWER:大写转小写

select LOWER('Hello Java') from dual

运行结果:hello java


UPPER:小写转大写

select UPPER('Hello Java') from dual

运行结果:HELLO JAVA


INITCAP:首字母大写

select INITCAP('hello java') from dual

运行结果:Hello Java


CONCAT:字符串拼接

select CONCAT('Hello ','Java!') from dual

运行结果:Hello Java!


SUBSTR:字符串截取

select SUBSTR('Hello Java',2,1) from dual

运行结果:e


LENGTH:字符串长度

select LENGTH('Hello Java') from dual

运行结果:10


INSTR:字符串中某个字符首次出现的位置

select INSTR('Hello Java','o') from dual

5


LPAD:从左补齐

select LPAD('Hello Java',20,'*') from dual

运行结果:**********Hello Java


RPAD:从右补齐

select RPAD('Hello Java',20,'*') from dual

Hello Java**********


TRIM:移除首尾字符,可移除多个相同的字符,也可以去除首位空格

select TRIM('x' from 'xxxxxHello Javaxxxxx') from dual

运行结果:Hello Java

select TRIM('     Hello Java     ') from dual

运行结果:Hello Java


REPLACE:替换

select REPLACE('xxxxxHello Javaxxxxx','x','') from dual

运行结果:Hello Java


ROUND
    ROUND(25.8368,2)——>25.84:保留2位有效数字,四舍五入
    ROUND(25.8368)——>26保留整数,四舍五入
    ROUND(25.8368,-1)——>30四舍五入
TRUNC
    TRUNC(25.8368,2)——>25.83:保留2位有效数字,直接截断
    TRUNC(25.8368)——>25保留整数,直接截断
    TRUNC(25.8368,-1)——>20直接截断


MOD:求余

select MOD(13,2) from dual

运行结果:1


SYSDATE:获取当时日期时间,精确到秒

select SYSDATE from dual

2019/6/13 16:50:39


MONTHS_BETWEEN:计算2个时间之间的月份差,计算天数差直接+-就可以了

select MONTHS_BETWEEN(to_date('2019-06-01','yyyy-mm-dd'),to_date('2019-01-01','yyyy-mm-dd')) from dual

运行结果:5

select to_date('2019-06-13','yyyy-mm-dd') - 13 from dual

运行结果:2019/5/31


ADD_MONTHS:月份运算

select ADD_MONTHS(to_date('2019-01-01','yyyy-mm-dd'),2) from dual

运行结果:2019/3/1

select ADD_MONTHS(to_date('2019-01-01','yyyy-mm-dd'),-2) from dual

运行结果:2018/11/1


NEXT_DAY:获取指定日期后的某个星期的日期

select NEXT_DAY(to_date('2019-06-01','yyyy-mm-dd'),'星期四') from dual

运行结果:2019/6/6


LAST_DAY:本月的最后一天

select last_day(to_date('2019-06-13','yyyy-mm-dd')) from dual;

运行结果:2019/6/30


TO_CHAR:将各种数据类型转换成字符型

select to_char(sysdate,'yyyy-mm-dd') from dual

2019-06-13

select to_char(sysdate,'yyyy"年"mm"月"dd"日"'s) from dual

2019年06月13日


TO_DATE

select TO_DATE('2019-01-01 12:00:00','yyyy-mm-dd hh24:mi:ss') from dual;

2019/1/1 12:00:00


NVL:空值替换,若第一个值为null则返回第二个值,若不为空返回第一个值(前后数据类型需要保持一致)

select NVL(null,'第二个值') from dual;

第二个值

select NVL('第一个值','第二个值') from dual;

第一个值


NVL2:空值替换,若第一个值为null则返回第三个值,若不为null则返回第二个值

select NVL2(null,'第二个值','第三个值') from dual;

第三个值

select NVL2('第一个值','第二个值','第三个值') from dual;

第二个值


COALESCE:空值替换,从前往后判断,返回第一个不为null值

select COALESCE(null,null,'第一个值') from dual;

第一个值


CASE WHEN THEN END:条件判断

select CASE 50 WHEN 10 THEN 'A' WHEN 20 THEN 'B' WHEN 30 THEN 'C' ELSE 'D' END from dual;

D

select CASE WHEN 10>20 THEN 'A' WHEN 20>20 THEN 'B' WHEN 30>20 THEN 'C' ELSE 'D' END from dual;

C

猜你喜欢

转载自blog.csdn.net/progammer10086/article/details/91879051