oracle的排序

Nulls first和nulls last是Oracle Order by支持的语法

如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)

如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)

时间: 2024-10-17 03:28:56

oracle的排序的相关文章

oracle sql 排序与比较中的技巧与注意事项(一)

在sql排序中,oracle默认采用二进制的排序方法.大小写有不同的值,大写的值排在前面.有时候,我们需要处理的情况是,希望忽略大小写来进行排序.有多种方法可以实现: 设置NLS环境变量 alter session set NLS_SORT = 'BINARY_CI'; 使用UPPER和LOWER函数 用UPPER函数和LOWER函数把要比较的字段名.文字都转换成大写或者小写后再比较.这种方法的不足之处在于,使用函数后,标准的索引就不能再使用了,优化器无法正常工作,应对的方式是使用基于功能的索引

Oracle分页排序的实现与分页数据重复问题

对于关系数据库来说,直接写SQL拉数据在列表中显示是很常用的做法.但如此便带来一个问题:当数据量大到一定程度时,系统内存迟早会耗光.另外,网络传输也是问题.如果有1000万条数据,用户想看最后一条,这时即便有足够的内存,在网络上传输这么多数据也得一两小时吧,恐怕没几个用户有这么耐心等.因此分页是必须的. 现在网上的论坛.博客什么的,基本上都会有分页功能,有些是SQL分页的,有些可能是NOSQL用其它方法分页,都有很成熟的东西了.本文根据我自己的经验,以ORACLE为例,讲下简单的SQL分页和排序

oracle拼音排序

今天做一个需求,要求按照人名排序,最开始没有怎么注意,就直接排序了,大致如下. select * from test_pinyin order by name 后来发现需要使用拼音排序,oracle默认的排序是安装二进制排序的,这一排序方式是按照字符在他所在的编码表里面的数值的大小进行排序的,二进制排序是最快的一种排序方式,这一排序方式对英语字母表的排序是合理的,但是对于一些其他的语言就不那么合理了. Using Binary Sorts One way to sort character da

mysql或者oracle分组排序取前几条数据

mysql: select a.* from(select t1.*,(select count(*)+1 from 表 where 分组字段=t1.分组字段 and 排序字段<t1.排序字段) as group_idfrom 表 t1) awhere a.group_id<=3 Oracle: SELECT t.*            FROM (SELECT ROW_NUMBER() OVER(PARTITION BY 分组字段 ORDER BY 排序字段 DESC) rn,      

Oracle 中文排序 NLSSORT NLS_SORT

今天发现了个挺有意思的函数:NLSSORT,发现能给中文按拼音.笔画.部首排序,遂查了下相关资料,结果如下: Oracle 9i开始,新增了按照拼音.部首.笔画排序功能. 通过设置NSL_SORT值来实现: SCHINESE_RADICAL_M 按照部首(第一顺序).笔划(第二顺序)排序 SCHINESE_STROKE_M 按照笔划(第一顺序).部首(第二顺序)排序 SCHINESE_PINYIN_M 按照拼音排序 实现中文排序有两种常见方式: session级 ALTER SESSION SE

sqlserver、oracle数据库排序空值null问题解决办法

转:https://www.cnblogs.com/pacer/archive/2010/03/02/1676371.html [sqlserver]: sqlserver 认为 null 最小. 升序排列:null 值默认排在最前. 要想排后面,则:order by case when col is null then 1 else 0 end ,col 降序排列:null 值默认排在最后. 要想排在前面,则:order   by case when col is null then 0 el

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时,相当于单字符一一对

关于oracle分组排序取值的问题

按照 某字段分组 某字段排序 然后取出该分组中排第1条数据(每组只取一条) SELECT* FROM( SELECT a.*,row_number() over(partition by ORI_FEE_ID order by MODIFY_TIME DESC) cn FROM AGENT_RESERVE_FEE_RATE a ) WHERE cn = 1; - MODIFY_TIME 排序字段- ORI_FEE_ID 分组字段- cn 为取值区间

Oracle 高级排序函数 和 高级分组函数

高级排序函数: [ ROW_NUMBER()| RANK() | DENSE_RANK ] OVER (partition by xx order by xx) 1.row_number() 连续且递增的数字 1 2 3 4   row_number() over (partition by xx order by xx )    --学生表中按照所在专业分组,同专业内按成绩倒序排序,成绩相同则按学号正序排序,并给予组内等级select row_number() over(partition b