Oracle查询优化--排序
2024-09-17 04:15:03
--普通排序
SELECT * FROM emp ORDER BY sal DESC;
--使用列序排序
SELECT * FROM emp ORDER BY 6 DESC;
--组合排序
SELECT * FROM emp ORDER BY deptno ASC,1 DESC;
--translate函数,参数分别用A、B、C表示
SELECT ename,translate(ename,'LE','el') FROM emp;--当C=B时,相当于单字符一一对应替换同位置替换,即L-->e,E-->l,范围是整个A
SELECT ename,translate(ename,'LE','ada') FROM emp;--当C>B时,多余字符无效,等长部分替换效果同第8行
SELECT ename,translate(ename,'LE','a') FROM emp;--当C<B时,多余字符被删除,登场部分替换效果同第8行
SELECT ename,translate(ename,'RNER','abcd') FROM emp;--替换位置为从左至右,因此第二个R对应的d不能发挥作用,因为到此处的判断时,A中的R均已被替换为a了
SELECT * FROM (SELECT ename,translate(ename,'LE','') a FROM emp)WHERE a IS NULL;--如果条件为a='',则无结果集
SELECT ename,translate(ename,'LE',null) FROM emp;--当C为null或''时,返回值为null而不是''
--translate 可以用来删除一些无用信息,比如名字中有数字一般是不会发生的,如果有,可以使用以下语句剔除
SELECT translate(ename,'-1234567890','-') FROM emp;--参考第三条基本用法,此语句作用是去除数字
--处理空值排序NULLS FIRST/NULLS LAST
SELECT * FROM emp ORDER BY comm;
SELECT * FROM emp ORDER BY comm NULLS FIRST;
SELECT * FROM emp ORDER BY comm NULLS LAST;--可见系统默认是NULLS LAST
--根据条件排序case when
SELECT empno AS 编号,ename AS 姓名,
CASE WHEN sal >=1000 AND sal<=2000 THEN 1
ELSE 2 END AS 级别 ,
sal AS 工资
FROM emp
WHERE deptno=30
ORDER BY 3,4;
--case when语句只涉及条件判断,可以放在order by子句中
SELECT empno AS 编号,ename AS 姓名,
sal AS 工资
FROM emp
WHERE deptno=30
ORDER BY CASE WHEN sal >=1000 AND sal<=2000 THEN 1
ELSE 2 END,3;
最新文章
- Linux下安装tensorflow
- NDK开发-零散知识点整理
- 超链接的那些事(三): 属性target
- $watch 和 $apply
- SSIS -->;>; Variable Data Type vs SSIS Data Type
- Android随笔--使用ViewPager实现简单地图片的左右滑动切换
- java synchronized(一)
- Java 开源博客——B3log Solo 0.6.6 正式版公布了!
- YII中引用自定义类
- uva 1400 - ";Ray, Pass me the dishes!";
- 如何通过Request.ServerVariables[";HTTP_USER_AGENT";]获取客户端操作系统信息
- jquery 实现全选反选
- java 对象比较
- NV12格式转RGB的CUDA实现
- 好用的Markdown编辑器汇总
- kubernetes学习01—kubernetes介绍
- springmvc+ajax——第二讲(页面缓存)
- AMD和CMD规范
- python的数据相关框架
- adb 架构