程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 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對Oracle 排序分頁的解決方案

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

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

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

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

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

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

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

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

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