前言:
今天小伙伴们对“oracle取排序后的前100”大概比较关心,朋友们都想要剖析一些“oracle取排序后的前100”的相关资讯。那么小编同时在网络上网罗了一些有关“oracle取排序后的前100””的相关文章,希望咱们能喜欢,看官们快快来学习一下吧!1.以指定的顺序返回查询结果
在实际查询中,我们通常会以指定的次序返回查询结果
两种写法:
1.和所查询的列的保持一致,
select name,borndate,salary from emp order by salary
2.按照查询的列的序号来排序,工资是第三列
select name,borndate,salary from emp order by 3
默认排序是从小到大
select name,borndate,salary from emp order by 3 asc; asc表示从小到大排序(顺序)
select name,borndate,salary from emp order by 3 desc; desc表示从大到小(逆序)
3.按多个字段排序
eg:按照部门编码升序,按照工资降序排列
select name,sal,deptno from emp order by deptno asc,sal desc;
4.按子串排列
用函数substr()把需要排序的字符截取出来即可
select name 员工姓名, phone_number 手机号码, sal 工资, substr(phone_number,-4) 尾号
from employees where rownum <= 5 order by 4;
5.TRANSLATE和REPLACE ORACLE中的替换函数
TRANSLATE的用法:
TRANSLATE(参数1,参数2,参数3),3个参数均为字符类型的数据
eg:select translate('ab 你好 bcadefg','abcdefg','1234567') as new_str from dual;
查询结果:
new_str
12 你好 2314567
'abcdefg','1234567'两个字符中 1替换a 2替换b 依次类推,按顺序替换;
如果参数3为空值,即'',则返回结果为空值
REPLACE的用法:
REPLACE(char, search_string,replacement_string)
解释:char 中 包含 search_string 的部分全都用 replacement_string 替换
eg:
select replace('abcdefg','bdc','234') new_str from dual;
输出结果:
new_str
a234efg
6.按数字和字母混合字符串中的字母排序
eg:数据库中有一列的数据既有数字,又有字母,需要按照字母排序
思路:用translate函数把这一列数据中的数字全都替换成空值,然后按照替换后的列进行排序;
7.处理排序空值
Oracle排序默认空值排在最后,如果我们想要把空值排在前面,如何处理?
两种种处理方法
(1).nvl(列,给列赋的值)
eg:给工资的空值的赋值为-1
select nvl(salary,-1) as salary from emp order by salary;
缺点:
需要对数据库的列和其中的值特别熟悉,一旦其中的值有变化,就需要重新写语句;
(2).nulls first 和 nulls last
nulls first:空值在前
eg:select name,deptno,salary from emp order by 3 nulls first;
nulls last:空值在后
eg: select name ,deptno,salary from emp order by 3 nulls last;
8.根据条件取不同列中的值来排序:
比如,领导希望工资在1000到2000之间的员工信息排在前面,以便查看
处理方法,可以重新生成1列,用sase when
select empno 员工编码,
empname 员工姓名,
case when salary >= 1000 and salary <= 2000 then 1 else 2 end as 级别,
salary 工资是第三列
from emp
where deptno = 30
order by 3,4;
也可以不显示结果,把case when 放到order by 中
select empno 员工编码,
empname 员工姓名,
salary 工资是第三列
from emp
where deptno = 30
order by
case when salary >= 1000 and salary <= 2000 then 1 else 2 end,3;
Oracle学习日记——单表查询
标签: #oracle取排序后的前100 #oracle取排序后的前后两条 #oracle提取字母和数字 #oracle如何截取后五位 #oracle截取数字前几位