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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM