Oracle使用order by排序关于null值处理

在Oracle中使用order by进行查询排序时,如果排序字段中有空值(null),排序结果可能会达不到我们想要的结果。如:

select * from test order by age desc; 

按照age字段降序排序,结果如下:

将sql语句改为

select * from test order by age desc nulls last;

即可将null值排到最后。”nulls last”将空值放在后面,相反的”nulls first”将空值记录放在前面

oracle默认为 null 最大。

升序排列,默认情况下,null值排后面。

降序排序,默认情况下,null值排前面。

作者:itmyhome

时间: 2024-12-09 11:23:15

Oracle使用order by排序关于null值处理的相关文章

MySQL中order by中关于NULL值的排序问题

MySQL中order by 排序遇到NULL值的问题 MySQL数据库,在order by排序的时候,如果存在NULL值,那么NULL是最小的,ASC正序排序的话,NULL值是在最前面的. 如果我们想让NULL排在后面,让非NULL的行排在前面该怎么做呢? MySQL数据库在设计的时候,如果字段允许NULL值,那么对该字段进行排序的时候需要注意那些值为NULL的行. 我们知道NULL的意思表示什么都不是,或者理解成"未知"也可以,它与任何值比较的结果都是false, 默认情况下,My

Oracle SQL篇(一)null值之初体验

    从我第一次正式的写sql语句到现在,已经超过10年的时间了.我写报表,做统计分析和财务对账,我一点点的接触oracle数据库,并尝试深入了解.这条路,一走就是10年,从充满热情,到开始厌倦,我不知道我还能坚持多久,未来的路,谁知道呢? 也许是该抓紧时间,做一点什么了,我不知道该开始写些什么,我从来没有在网上写东西的习惯.     先从简单的开始吧,那当然就是SQL,这是我SQL系列的第一篇,希望我能够坚持. 在Oracle数据库中,如果一个表中的列没有值的话,我们可以说是空值,比如IT员

oracle的order by排序中空字符串处理方法

1.缺省处理 Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前 2.使用nvl函数 nvl函数可以将输入参数为空时转换为一特定值,如 nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name 通过这个函数可以定制null的排序位置. 3.使用decode函数 decode函数比nvl函数更强大,同样它也可以将输入参数为空时转换为一特定值,如 de

oracle查询不等于条件包含null值

需求:现在oracle数据库中有字段is_use 的值有:null,0,1,2.现在需要查询不等于2的数据 解决办法的sql: select * from uc_Users where nvl(is_use,'xx')<>'2' ======================================= nvl(is_use,'xx')的意思是:如果is_use为null,值为xx. 如果用select * from uc_Users where is_use<>'2' 只会查

数据库对null值的处理

Oracle排序中NULL值处理的五种常用方法 1.缺省处理 Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前 2.使用nvl函数 nvl函数可以将输入参数为空时转换为一特定值,如 nvl(employee_name,'张三')表示当employee_name为空时则返回'张三',如果不为空则返回employee_name 通过这个函数可以定制null的排序位置. 3.使用decode函数 decode函数比nvl函数更强大,同样

MySQ学习笔记之十 NULL值处理

这是MySQL一大特殊之处. 概念上,NULL意味着"没有值"或"未知值",且它被看作有点与众不同的值.为了测试NULL,你不能使用算术比较运算符例如=.<或!=.为了说明它,试试下列查询: mysql> SELECT 1 = NULL, 1 != NULL, 1 < NULL, 1 > NULL; +----------+-----------+----------+----------+ | 1 = NULL | 1 != NULL |

sql server null值需要注意的地方

1.null与任何运算符运算后都为null 普通的值一般都可能进行运算符操作,但例如:ID列为int,所以可以这样:ID=ID+1等,但如果一列的值为null,null+1=null 例如 update testNullset b=b+1where b is null 查询后发现b的值没有变化,仍然为null. 2.任何值与null比较时都会返回false 普通的值可以进行"="操作,例如条件中一般都会这样出现:sUserName='张三',如果sUserName的值为null,要想找

mysql null 值查询问题

我在开发公司内部的一个项目时遇到一个问题:select student_quality_id from STUDENT_QUALITY where mark_status=0 and batch_stauts in (2,3)结 果遇到一直找不到符合条件的student_quality_id ,后来才发现没有考虑到null值的问题,修改成 select student_quality_id from STUDENT_QUALITY where (mark_status=0 or mark_sta

Oracle数据库--过滤和排序

过滤和排序 1. 在查询中过滤行 过滤:使用WHERE子句将不满足条件的行过滤掉 where子句紧跟From子句 1)查询10号部门的员工 SQL> select * 2 from emp 3 where deptno=10; 2)字符串大小写敏感      查询名叫KING的员工 SQL> select * 2 from emp 3* where ename='KING' SQL> / 3)日期格式敏感     查询入职日期是17-11月-81的员工 SQL> select *