日期:2014-05-17  浏览次数:20485 次

空值排序小问题
我在一张表的两列中都包含空值Null和“”,怎样将这两列空值的数据都排序并显示在最前端。order by我已经用过了,发现如果是一列的话没有问题,但是如果order by 两列的话,第二列中部分空值无法排序在最前。
空值,排序

------解决方案--------------------
select  *
from tb
order by case when isnull(col,'')='' then 0 else 1 end,col

------解决方案--------------------
order by isnull(col,'')
这样处理一下
------解决方案--------------------
order by isnull(col,'0')
------解决方案--------------------
select  *
from tb
order by (CASE WHEN (ISNULL(col1, '') = '' OR ISNULL(col2, '') = '') THEN NULL ELSE '' END)

------解决方案--------------------
--  两列同时为空,排在最前面,其中之一列为空其次,两列都不为空排在后面
select  *
from tb
order by case when isnull(col1,'')='' and isnull(col2,'')='' then 0 
when isnull(col1,'')='' or isnull(col2,'')='' then 1 else 2 end,col1,col2