关于Oracle数据库中SQL空值排序的问题

在Oracle中进行查询排序时,如果排序字段里面有空值的情况下,排序结果可能会达不到自己想要的结果。

 

如 select * from tableTest order by VISITS desc

 

上图可以看到表示服务访问次数的“VISITS”字段上的空值记录排序时放在前面,和实际逻辑不对

 

将原来的sql语句改写为:select * from tableTest order by VISITS desc nulls last,

 

"nulls last"控制将空值记录放在后面,当然,你也可以用"nulls first"将控制记录放在前面。

时间: 2024-09-20 00:12:42

关于Oracle数据库中SQL空值排序的问题的相关文章

Oracle数据库中SQL语句的优化技巧_oracle

在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. /*+FIRST_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.

Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出_oracle

ORDER BY非稳定的排序提一个问题: oracle在order by 排序时,是稳定排序算法吗? 发现用一个type进行排序后,做分页查询,第一页的数据和第二页的数据有重复 怀疑是order by 时,两次排列的顺序不一致 看到业务描述的问题可以得到的结论order by排序不稳定,还有第一个印象就是,type肯定是不唯一的,并且没有索引吧. 这里先科普下排序的稳定性,举个最简单的例子,1,2,3,1,4,5 排序 排序的结果是1,1,2,3,4,5,这时候观察这个1,如果第一个1还是排序前

oracle数据库中sql基础

oracle|数据|数据库     一.关系数据库的一些概念 1.主键的值一般不可以改变 2.外键:指向另一个表或本表的主键或唯一键的字段.外键的值一定要和某一主键相同,或者为空. 3.数据库对像:表,视图,序列,索引,同义词,程序(进程,函数,sql和pl/sql数据)4.sql command 类别 data retrieval数据检索:select data manipulationlanguage (DML)数据操作语言:insert,update,delete data definit

oracle数据库中关于null排序的问题

问题描述: 在处理一般的数据记录中,对于数字类型的字段,在oracle的排序中,默认把null值做为大于任何数字的类型,当然对于varchar2类型的字段,默认也是该处理方式,但是客户要求排序的过程中,需要把null的字段默认排在前边(从小-->大).一般的order by xxxx,无法解决. 问题解决: 方案1: 可以使用复杂的使用sql: select * from(select a.*,rownum as my_sys_rownum from (select deptid,nvl(BDZ

检查Oracle数据库中不合理的sql语句

oracle|数据|数据库|语句 代码: select sql_text ,sharable_mem from v$sql where sharable_mem > '100000' order by sharable_mem ; 上面的sql语句是查询shared pool中占用内存超过100K的sql语句. 这个sql可以非常有效的检查出Oracle shared pool中那些严重占用内存的sql,根据我的经验,绝大多数有问题的sql语句都会在这里留下痕迹,通过在这里找出有问题的sql语句

关于oracle数据库中记录之间计算的问题

问题描述 关于oracle数据库中记录之间计算的问题 我现在在oracle数据库中有这样的出租车记录,每条记录表示一次出租车交易, ID1,出租车车牌,出租车上车时间,出租车下车时间 ID2,出租车车牌,出租车上车时间,出租车下车时间 ID3,出租车车牌,出租车上车时间,出租车下车时间 ID4,出租车车牌,出租车上车时间,出租车下车时间 我想统计这辆出租车这次下车到下次上车的时间差,该如何用sql语句? 这样的时间差有很多,我想统计它们的分布情况,请问应该怎么做?求助... 解决方案 利用排序后

哪位大神指导一下,关于Oracle数据库中类型varchar2(2) 存储汉字的问题

问题描述 哪位大神指导一下,关于Oracle数据库中类型varchar2(2) 存储汉字的问题 大神们跪求招数:orcale数据库中的一个字段YXQDW(有效期单位) 类型varchar2(2) 才两字节 用来存一个汉字,比如"年",我的项目(C#)一个汉字占用3个字节, 写SQL语句 insert不进去啊,提示字段范围超出了.难不成要像blob字段那样写?或者有什么更好的方式能将该字段插入呢?万分感激! 解决方案 可以换成nvarchar(2),这个是可变长度

Oracle数据库与SQL Server数据库镜像对比

数据库镜像是将数据库事务处理从一个数据库移动到不同环境中的另一个数据库中.镜像的拷贝是一个备用的拷贝,不能直接访问,它只用在错误恢复的情况下.Oracle数据库与MSSQL数据操作上有很大的不同,但是,在镜像操作方面有类比的地方.这篇文章关于MSSQL数据库镜像在Oracle数据库中是如何实现的,它们之间存在哪些差异呢. 首先,微软SQL数据库中的镜像数据库类似于Oracle数据库中的备用数据库.我说的只是类似,确切的说,我们需要考虑不同数据库在自己体系中的差异.MSSQL作为一个实例来操作,一

关于ORACLE数据库中汉字显示乱码

  1 引言 ORACLE数据库作为业界领先的数据库产品,近年来在国内大中型企业中得到了广泛的应用.虽然ORACLE数据库产品本身在本地化方面已做得相当成熟,但还是有不少用户反应汉字显示乱码的问题.如对同一数据库不同的用户对同一表中的username查询却得出了不同的结果: "ORACLE??????"和"ORACLE中国有限公司",显然结果中将中文字符显示为乱码,那么为什么呢?字符集的设置不当是影响ORACLE数据库汉字显示的关键问题. 2 关于字符集 字符集是O