搜索
首页数据库Oracle一起聊聊ORACLE中ORDER BY的多种排序

本篇文章给大家带来了关于Oracle的相关知识,其中主要介绍了关于ORDER BY多种排序的相关问题,包括了按单个字段排序、按多个字段排序、按子串排序等等,希望对大家有帮助。

一起聊聊ORACLE中ORDER BY的多种排序

推荐教程:《Oracle学习教程

1. 按单个字段排序

升序:ORDER BY ASC(默认)

降序:ORDER BY DESC

以指定的次序返回查询结果实际提取数据或生成报表时,一般都要根据一定的顺序查看,比如,想查看单位所雇员工的信息。

SELECT empno, ename, hiredate FROM emp WHERE deptno = 10 ORDER BY hiredate ASC;

给查询结果排序这种语句很多人都会写,但除了“ORDER BY hiredate ASC”这种写法外,还可以写成“ ORDER BY 3 ASC”,意思是按第三列排序。

SELECT empno, ename, hiredate FROM emp WHERE deptno = 10 ORDER BY 3 ASC;

当取值不定时,用这种方法就很方便,需要注意的是,

用数据来代替列位置只能用于 order by子句中,其他地方都不能用

2. 按多个字段排序

如果按多列排序且有升有降怎么办?如:按部门编号升序,并按工资降序排列排序时有两个关键字:ASC表示升序、DESC表示降序所以我们在 order by后加两列,并分别标明ASC、DESC。

SELECT empno, deptno, sal, ename, job FROM emp ORDER BY 2 ASC, 3 DESC;

下面用图的形式进行介绍,如下图所示,多列排序时,若前面的列有重复值(如deptno = 10有3行数据),后面的排序才有用。相当于是通过前面的列把数据分成了几组,然后每组的数据再按后面的列进行排序。

 3. 按子串排序

按子串排序有一种速査法就是按顾客电话号码尾号的顺序记录,这样在查找的时候就可以快速缩小査询范围,增强顾客的认可度。如果要按这种方法排序,应该怎么做呢?通过函数取出后面几位所需的信息即可。

SELECT last_name AS 名称,
       phone_number AS 号码,
       salary as 工资,
       substr(phone_number, -4) AS 尾号
  FROM hr.employees
 WHERE rownum < 5
 ORDER BY 4;

由此可见:只要能将数据査询出来,就能根据相应的信息排序。

4. TRANSLATE

语法格式:TRANSLATE(expr, from_string, to_string)

示例如下:

SELECT TRANSLATE( &#39;ab 你好 bcadefg&#39;, &#39;abcdefg&#39;, &#39;1234567&#39; ) AS NEW_STR FROM DUAL;

from_string与to_string以字符为单位,对应字符一一替换。

如果 to_string为空,则返回空值

SELECT TRANSLATE( &#39;ab 你好 bcadefg&#39;, &#39;abcdefg&#39;, &#39;&#39; ) AS NEW_STR FROM DUAL;

如果 to_string对应的位置没有字符,删除 from_string中列出的字符将会被消掉。

SELECT TRANSLATE( &#39;ab 你好 bcadefg&#39;, &#39;1abcdefg&#39;, &#39;1&#39; ) AS NEW_STR FROM DUAL;

5. 按数字和字母混合字符串中的字母排序

首先创建VIEW如下:

CREATE OR REPLACE VIEW V 
as 
SELECT empno || &#39; &#39; || ename AS data FROM emp;
select * from V;

这个需求就难一点了,看到里面的字母(也就是原来的列 ename)吗?要求按其中的字母(列 ename)排序。

那么就要先取出其中的字母才行,我们可以用 translate的替换功能,把数字与空格都替换为空:

SELECt data, translate (data, &#39;- 0123456789&#39;, &#39;-&#39; )AS ename
  FROM v
 ORDER BY 2;

6. 处理排序空值

Oracle默认排序空值在后面,如果想把空值(如emp.comm)显示在前面怎么办,用NVL(comm,-1)吗?

SELECT ename, sal, comm, nvl(comm, - 1) order_col FROM emp ORDER BY 4;

也许很多人都是用的这种方法,但这种方法需要对列类型及其中保存的数据有所了解才行,而且保存的数据如果有变化,该语句就要重新维护。
其实可以用关键字 NULLS FIRST和 NULLS LAST。

空值在前

SELECT ename, sal, comm FROM emp ORDER BY 3 NULLS FIRST;

空值在后

SELECT ename, sal, comm FROM emp ORDER BY 3 NULLS LAST;

是不是要方便得多?

7. 根据条件取不同列中的值来排序

有时排序的要求会比较复杂,比如:领导对工资在1000到2000元之间的员工更感兴趣,于是要求工资在这个范围的员工要排在前面,以便优先査看。
对于这种需求,我们可以在查询中新生成一列,用多列排序的方法处理:

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;

可以看到,950与2850都排在了后面,也可以不显示级别,直接把 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;

 

推荐教程:《Oracle教程

以上是一起聊聊ORACLE中ORDER BY的多种排序的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:CSDN。如有侵权,请联系admin@php.cn删除
甲骨文的产品:深度潜水甲骨文的产品:深度潜水Apr 19, 2025 am 12:14 AM

Oracle的产品生态包括数据库、中间件和云服务。1.OracleDatabase是其核心产品,支持高效的数据存储和管理。2.中间件如OracleWebLogicServer连接不同系统。3.OracleCloud提供全套云计算解决方案。

MySQL和Oracle:功能和功能的关键差异MySQL和Oracle:功能和功能的关键差异Apr 18, 2025 am 12:15 AM

MySQL和Oracle在性能、扩展性和安全性方面各有优势。1)性能:MySQL适合读操作和高并发,Oracle擅长复杂查询和大数据处理。2)扩展性:MySQL通过主从复制和分片扩展,Oracle使用RAC提供高可用性和负载均衡。3)安全性:MySQL提供细粒度权限控制,Oracle则有更全面的安全功能和自动化工具。

甲骨文:数据库管理甲骨文:数据库管理Apr 17, 2025 am 12:14 AM

Oracle被称为数据库管理的“Powerhouse”是因为其高性能、可靠性和安全性。1.Oracle是一个关系数据库管理系统,支持多种操作系统。2.它提供强大的数据管理平台,具有可扩展性、安全性和高可用性。3.Oracle的工作原理包括数据存储、查询处理和事务管理,支持性能优化技术如索引、分区和缓存。4.使用示例包括创建表、插入数据和编写存储过程。5.性能优化策略包括索引优化、分区表、缓存管理和查询优化。

Oracle提供什么?产品和服务解释Oracle提供什么?产品和服务解释Apr 16, 2025 am 12:03 AM

OracleOfferSacomprehensUIteOfproductSandServicesservicesCludingDatabasemangemention,CloudComputing,Enterprisesoftware,AndhardWaresolutions.1)oracledatabaseuppasesuppassuppassuppersupportsvariousdatamodelswithefffiteFticsFeatures.2)

Oracle软件:从数据库到云Oracle软件:从数据库到云Apr 15, 2025 am 12:09 AM

Oracle软件的发展历程从数据库到云计算,具体包括:1.起源于1977年,最初专注于关系数据库管理系统(RDBMS),迅速成为企业级应用的首选;2.扩展到中间件、开发工具和ERP系统,形成全套企业解决方案;3.Oracle数据库支持SQL,提供高性能和可扩展性,适用于从小型到大型企业系统;4.云计算服务的崛起,进一步拓展了Oracle的产品线,满足企业IT需求的方方面面。

MySQL与Oracle:优点和缺点MySQL与Oracle:优点和缺点Apr 14, 2025 am 12:01 AM

MySQL和Oracle的选择应基于成本、性能、复杂性和功能需求:1.MySQL适合预算有限的项目,安装简单,适用于小型到中型应用。2.Oracle适用于大型企业,处理大规模数据和高并发请求表现出色,但成本高且配置复杂。

甲骨文的目的:业务解决方案和数据管理甲骨文的目的:业务解决方案和数据管理Apr 13, 2025 am 12:02 AM

Oracle通过其产品和服务帮助企业实现数字化转型和数据管理。1)Oracle提供全面的产品组合,包括数据库管理系统、ERP和CRM系统,帮助企业自动化和优化业务流程。2)Oracle的ERP系统如E-BusinessSuite和FusionApplications,实现端到端业务流程自动化,提高效率并降低成本,但实施和维护成本较高。3)OracleDatabase提供高并发和高可用性数据处理,但许可成本较高。4)性能优化和最佳实践包括合理使用索引和分区技术、定期数据库维护及遵循编码规范。

oracle建库失败怎么删除oracle建库失败怎么删除Apr 12, 2025 am 06:21 AM

Oracle建库失败后删除失败数据库的步骤:使用sys用户名连接目标实例使用DROP DATABASE删除失败数据库查询v$database确认数据库已删除

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。