程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle 排序中常用的NULL值處理方法

Oracle 排序中常用的NULL值處理方法

編輯:關於Oracle數據庫

1、缺省處理
 
Oracle在Order by 時缺省認為null是最大值,所以如果是ASC升序則排在最後,DESC降序則排在最前

2、使用nvl函數
 
nvl函數可以將輸入參數為空時轉換為一特定值,如nvl(employee_name,’張三’)表示當employee_name為空時則返回’張三’,如果不為空則返回employee_name通過這個函數可以定制null的排序位置。

3、使用decode函數
 
decode函數比nvl函數更強大,同樣它也可以將輸入參數為空時轉換為一特定值,如
decode(employee_name,null,’張三’, employee_name)表示當employee_name為空時則返回’張三’,如果不為空則返回employee_name
通過這個函數可以定制null的排序位置。

4、使用case 語法
 
Case語法是Oracle 9i後開始支持的,是一個比較靈活的語法,同樣在排序中也可以應用如:
select *
 from employee
 order by  (case employee_name
            when null then
             '張三'
            else
             employee_name
          end)
表示當employee_name為空時則返回’張三’,如果不為空則返回employee_name通過case語法同樣可以定制null的排序位置。
 
5、使用nulls first 或者nulls last 語法
 
Nulls first和nulls last是Oracle Order by支持的語法
如果Order by 中指定了表達式Nulls first則表示null值的記錄將排在最前(不管是asc 還是 desc)
如果Order by 中指定了表達式Nulls last則表示null值的記錄將排在最後 (不管是asc 還是 desc)
使用語法如下:
--將nulls始終放在最前
select * from zl_cbqc order by cb_ld nulls first
 
--將nulls始終放在最後
select * from zl_cbqc order by cb_ld desc nulls last

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