1、COALESCE(EXPR1,EXPR2,EXPR3...EXPRn)函数:从左往右数,遇到第一个非null值,则返回该非null值。
如果第一个参数为null,则返回第二个参数
如果第一个参数为非null,则返回第一个参数
2、nvl(COMMISSION_PCT,0):
3、nvl2(str, str, 0):
4、decode(str, '0', 11, '1', 22, 00):
5、case 字段 when ‘key1’ then 'value1' when ‘key2’ then 'value2' else 'value2'
6、时间函数
to_char(sysdate, ‘yyyy-mm-dd hh24:mi:ss’)
to_date('2019-01-11 00:00:00', ‘yyyy-mm-dd hh24:mi:ss’)
date '2019-01-11 00:00:00'
7、 DISTINCT 去重
8、 NLSSORT排序
order by NLSSORT(t.b,'NLS_SORT = SCHINESE_PINYIN_M');--拼音
order by NLSSORT(t.b,'NLS_SORT = SCHINESE_STROKE_M') --笔画
order by NLSSORT(t.b,'NLS_SORT = SCHINESE_RADICAL_M') --部首
9、fetch(12C版本才有,类似于mysql的limit),rownum,
SELECT
*
FROM
emp
ORDER BY sal DESC
FETCH NEXT 5 ROWS ONLY;
SELECT
*
FROM
emp
ORDER BY sal DESC
LIMIT 5;
oracle11g的用法
select *
from (select * from emp t order by t.sal desc) x
where rownum <= 3
10、其他函数,
length:长度 select length(t.job) job from emp t
upper:全大写 select upper(t.job) job from emp t
lower: 全小写 select lower(t.job) job from emp t
||:字符连接, select t.empno || t.ename || ',' || t.job aa from emp t
(mysql的函数SELECT CONCAT_WS(',' emp_name, sex, salary) FROM emp;)
substr、instr:substr(t.email, 1, instr(t.email, '@')-1)
replace:replace(t.email,'com', 'net')
dbms_Random:order by dbms_Random.value (返回随机排序的员工)(mysql随机排序ORDER BY RAND();)
数学函数 CEIL、FLOOR 和 ROUND:想上取整,向下取整,四舍五入( select ceil(1.253), floor(1.234), round(1.44) from dual;)
greatest: select t.empno, greatest(empno, t.mgr) from emp t;,返回行中最大值
dbms_random.value(0, 100):获取随机数
trunc:select trunc(dbms_random.value(0, 100)) xx from dual,取随机数的整数,舍去小数点