SQLServer和Oracle 空值排序

摘要:SQLServer和Oracle 空值排序

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 else 1 end , col desc

oracle认为 null 最大。

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

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

改动 空值办法:

(1)用nvl函数或decode函数将null转换为一特定值

替换null: nvl(arg,value)

(2)用case语法将null转换为一特定值(oracle9i以后版本支持。和sqlserver类似):

order by (case mycol when null then‘北京漂客’else mycol end)

(3)运用 nulls first 或者nulls last 语法。

null值排序的语法

nulls first :将null排在最前面。如:

 select  *  from mytb order by mycol nulls first

null last :将null排在最后面。如:

 select  *  from mytb   order by mycol nulls last

我就像一只趴在玻璃的蒼蠅,前途一片光明,卻找不到出路……