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;

 

转载于:https://www.cnblogs.com/yw0219/p/6040997.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值