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