程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle 有趣排序包括那些

Oracle 有趣排序包括那些

編輯:Oracle數據庫基礎

其實Oracle 的排序是很有意思的,接下來我們就主要來介紹Oracle 有趣排序,如果你對Oracle 的排序很感興趣的話,以下就是文章的具體內容介紹,希望你浏覽完以下的內容會有所收獲。

按拼音排序 (系統默認)

  1. select * from perexl order by nlssort
    (danwei,'NLS_SORT=SCHINESE_PINYIN_M'); 

按部首排序

  1. select * from perexl order by nlssort(danwei,'NLS_SORT=SCHINESE_STROKE_M'); 

按筆畫排序

  1. select * from perexl order by nlssort(danwei,'NLS_SORT=SCHINESE_RADICAL_M'); 

排序後獲取第一行數據

  1. select * from (select * from perexl order by nlssort
    (danwei,'NLS_SORT=SCHINESE_PINYIN_M') )C where rownum=1 

降序排序

  1. select * from perexl order by zongrshu desc 

在Oracle 有趣排序中升序排序以下所示

  1. select * from perexl order by zongrshu asc 

將nulls始終放在最前

  1. select * from perexl order by danwei nulls first 

將nulls始終放在最後

  1. select * from perexl order by danwei desc nulls last 

decode函數比nvl函數更強大,同樣它也可以將輸入參數為空時轉換為一特定值

  1. select * from perexl order by decode(danwei,null,'單位是空', danwei) 

標准的rownum分頁查詢使用方法

  1. select *from (select c.*, rownum rn from personnel c)where rn >= 1and rn <= 5 

在Oracle語句rownum對排序分頁的解決方案

但是如果, 加上order by 姓名 排序則數據顯示不正確

  1. select *from (select c.*, rownum rn from personnel c order by 出生年月)where rn >= 1and rn <= 5 

解決方法,再加一層查詢,則可以解決

  1. select *from (select rownum rn, t.*from 
    (select 姓名, 出生年月 from personnel order by 出生年月 desc) t)
    where rn >= 1and rn <= 5 

如果要考慮到效率的問題,上面的還可以優化成(主要兩者區別)

  1. select *from (select rownum rn, t.*from 
    (select 姓名,出生年月 from personnel order by 出生年月 desc) 
    t where rownum <= 10) where rn >= 3 

nvl函數可以將輸入參數為空時轉換為一特定值,下面就是當單位為空的時候轉換成“單位是空”

  1. select * from perexl order by nvl(danwei,'單位是空') 

以上的相關內容就是對Oracle 有趣排序的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved