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的列按照自己的意願進行排序,可做如上處理。