標籤:
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
oracle的order by排序中Null 字元串處理方法