sql查询结果集根据指定条件排序的方法
oracle认为 null 最大。
升序排列,默认情况下,null值排后面。
降序排序,默认情况下,null值排前面。
有几种办法改变这种情况:
(1)用 nvl 函数或decode 函数 将null转换为一特定值
(2)用case语法将null转换为一特定值(oracle9i以后版本支持。和sqlserver类似):
 1.当值为某个值的时候,指定排序的时候的位置
  select * from (
  select 1 t from dual
  union all
  select 2 t  from dual
  union all
  select 3 t from dual
  union all
  select 4 t from dual
  ) a  order by case when a.t=2 then 1 else 0 end
 2.当值为某个值的时候,排序的时候,永远在最后
  select * from (
  select 1 t from dual
  union all
  select 2 t  from dual
  union all
  select 3 t from dual
  union all
  select 4 t from dual
  ) a  order by case when a.t=2 then null else 0 end asc  nulls last
结果:


(3)使用nulls first 或者nulls last 语法。
这是oracle专门用来null值排序的语法。
nulls first :将null排在最前面。如:select * from mytb order by mycol nulls first
null last :将null排在最后面。如:select * from mytb order by mycol nulls last
如果要想让含有null的列按照自己的意愿进行排序,可做如上处理。
sql查询结果集根据指定条件排序的方法的更多相关文章
- sql查询调优之where条件排序字段以及limit使用索引的奥秘
		奇怪的慢sql 我们先来看2条sql 第一条: select * from acct_trans_log WHERE acct_id = 1000000000009000757 order b ... 
- mysql 查询结果集按照指定的字段值顺序排序
		mysql 查询结果如果不给予指定的order by ,那么mysql会按照主键顺序(innodb引擎)对结果集加以排序,那么最后的排序可能就不是你想要的排序结果. 举个例子,我要按照前端传过来的mo ... 
- 使用HIBERNATE的SQL查询并将结果集自动转换成POJO
		在某些场合下,我们可能想使用HIBERNATE的框架提供的SQL查询接口,但是,由于实体没有做映射,HIBERNATE不能把结果集转换成你想要的List<POJO>,本文讨论如何在这种情况 ... 
- SQL查询数据库中所有指定类型的字段名称和所在的表名
		--查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 SELECT cols.object_id , co ... 
- 关于sql查询结果集的链接
		开通博客有一段时间了,第一次博文.本身是个理工科的,没啥文采,就想着把平时遇到的问题记录下来,防止自己以后忘了还要去翻找. 今天看到同事写的代码,查询两张表里的数据,结果集类型是一样的.写了两条查询, ... 
- Mysql查询按照某字段指定顺序排序
		在项目当中用到Sphinx的时候,很多人遇到了这样的问题:使用mysql+Sphinx检索出了相关度的ID后,如何按照指定ID在Mysql中进行排序呢?这里是我在项目中的解决方法: 1 SELECT ... 
- SQL Server中使用自定义指定顺序排序
		比如需要对SQL表中的字段NAME进行如下的排序:张三(Z)李四(L)王五(W)赵六(Z) 如果想按 “ 张三.李四.王五.赵六”的顺序排序,则可以使用以下语句: order by charindex ... 
- PL/SQL 查询结果集直接修改数据
		使用t.rowid,查询可以直接在查询结果中修改提交 SELECT t.rowid,t.* from UC_ROLE t where ROLE_NAME like '% %' 
- SQL 查询数据库中包含指定字符串的相关表和相关记录
		declare @str varchar(100)set @str='我要找的' --要搜索的字符串 declare @s varchar(8000)declare tb cursor local f ... 
随机推荐
- 通过模板类简单实现Spark的JobServer
			实验前后效果对比: 之前:执行13个节点,耗时16分钟 之后:同样13个节点,耗时3分钟 具体逻辑请参照代码及注释. import java.util.concurrent.{ExecutorServ ... 
- org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.io.Text
			代码缺少这一行:job.setInputFormatClass(KeyValueTextInputFormat.class); 
- Git提交引用和引用日志
			转载自:https://github.com/geeeeeeeeek/git-recipes/wiki/5.5-Git%E6%8F%90%E4%BA%A4%E5%BC%95%E7%94%A8%E5%9 ... 
- UltraISO PE(软碟通) v9.6.2.3059  注册码
			注册码: 王涛7C81-1689-4046-626F 
- HW2.19
			public class Solution { public static void main(String[] args) { char outcome; long randomNumber; wh ... 
- 小波变换和motion信号处理(三)(转)
			这篇文章算太监了,去作者blog提问去吧:http://www.kunli.info/2012/04/08/fourier-wavelet-motion-signal-3/ 从前两篇发布到现在,过去一 ... 
- Devlop Win 8 and Windows Phone App for Microsoft Dynamics CRM
			Microsoft Dynamics CRM App for Windows Phone http://www.windowsphone.com/en-us/store/app/dynamics-cr ... 
- POSIX-Centos查看rpm包安装位置及相关信息
			rpm -qifl `which svnserve`; http://www.ctohome.com/FuWuQi/56/122.html [国外服务器及ip租用价格] Centos6 kvm网桥配置 ... 
- Java 线程池详细介绍
			根据摩尔定律(Moore’s law),集成电路晶体管的数量差不多每两年就会翻一倍.但是晶体管数量指数级的增长不一定会导致 CPU 性能的指数级增长.处理器制造商花了很多年来提高时钟频率和指令并行.在 ... 
- Linux的五个查找命令:find,locate,whereis,which,type
			使用电脑的时候,经常需要查找文件. 在Linux中,有很多方法可以做到这一点.国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条.大多数程序员,可能经常使用其中的2到3条,对这5条命令 ... 
