Oracle查询优化--排序
1 --普通排序 2 SELECT * FROM emp ORDER BY sal DESC; 3 --使用列序排序 4 SELECT * FROM emp ORDER BY 6 DESC; 5 --组合排序 6 SELECT * FROM emp ORDER BY deptno ASC,1 DESC; 7 --translate函数,参数分别用A、B、C表示 8 SELECT ename,translate(ename,'LE','el') FROM emp;--当C=B时,相当于单字符一一对应替换同位置替换,即L-->e,E-->l,范围是整个A 9 SELECT ename,translate(ename,'LE','ada') FROM emp;--当C>B时,多余字符无效,等长部分替换效果同第8行 10 SELECT ename,translate(ename,'LE','a') FROM emp;--当C<B时,多余字符被删除,登场部分替换效果同第8行 11 SELECT ename,translate(ename,'RNER','abcd') FROM emp;--替换位置为从左至右,因此第二个R对应的d不能发挥作用,因为到此处的判断时,A中的R均已被替换为a了 12 SELECT * FROM (SELECT ename,translate(ename,'LE','') a FROM emp)WHERE a IS NULL;--如果条件为a='',则无结果集 13 SELECT ename,translate(ename,'LE',null) FROM emp;--当C为null或''时,返回值为null而不是'' 14 --translate 可以用来删除一些无用信息,比如名字中有数字一般是不会发生的,如果有,可以使用以下语句剔除 15 SELECT translate(ename,'-1234567890','-') FROM emp;--参考第三条基本用法,此语句作用是去除数字 16 --处理空值排序NULLS FIRST/NULLS LAST 17 SELECT * FROM emp ORDER BY comm; 18 SELECT * FROM emp ORDER BY comm NULLS FIRST; 19 SELECT * FROM emp ORDER BY comm NULLS LAST;--可见系统默认是NULLS LAST 20 --根据条件排序case when 21 SELECT empno AS 编号,ename AS 姓名, 22 CASE WHEN sal >=1000 AND sal<=2000 THEN 1 23 ELSE 2 END AS 级别 , 24 sal AS 工资 25 FROM emp 26 WHERE deptno=30 27 ORDER BY 3,4; 28 --case when语句只涉及条件判断,可以放在order by子句中 29 SELECT empno AS 编号,ename AS 姓名, 30 sal AS 工资 31 FROM emp 32 WHERE deptno=30 33 ORDER BY CASE WHEN sal >=1000 AND sal<=2000 THEN 1 34 ELSE 2 END,3;
God, Grant me the SERENITY, to accept the things I cannot change,
COURAGE to change the things I can, and the WISDOM to know the difference.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix