oracle資料庫中關於null排序的問題

2021-04-26 13:24:18 字數 1263 閱讀 6478

問題描述:

在處理一般的資料記錄中,對於數字型別的字段,在oracle的排序中,預設把null值做為大於任何數字的型別,當然對於varchar2類 型的字段,預設也是該處理方式,但是客戶要求排序的過程中,需要把null的字段預設排在前邊(從小-->大)。一般的order by ***x,無法解決。

問題解決:

方案1:

可以使用複雜的使用sql:

select * from

(select a.*,rownum as my_sys_rownum from (

select deptid,nvl(bdzname,' '),nvl(vollevel,'0'),zbrl,nvl(zbts, '0'),

nvl(fzr,'0'),nvl(deptiddes,' '),nvl(tel,' '),nvl(runstatedes,' '),

nvl(address,' '),bdzid from v_bdz where rownum<2000

and zbrl is null

) aunion

select b.*,rownum+(select count(*) from (

select deptid,nvl(bdzname,' '),nvl(vollevel,'0'),zbrl,nvl(zbts, '0'),

nvl(fzr,'0'),nvl(deptiddes,' '),nvl(tel,' '),nvl(runstatedes,' '),

nvl(address,' '),bdzid from v_bdz where rownum<2000

and zbrl is null

)) as my_sys_rownum from (

select deptid,nvl(bdzname,' '),nvl(vollevel,'0'),zbrl,

nvl(zbts, '0'),nvl(fzr,'0'),

nvl(deptiddes,' '),nvl(tel,' '),nvl(runstatedes,' '),

nvl(address,' '),bdzid from v_bdz where rownum<2000

and zbrl is not null order by zbrl

) b)

order by my_sys_rownum desc

方案2:

可以利用oracle中可以對order by中對比較欄位做設定的方式來實現:

如: ……order by nvl( aaa,'-1')

關於oracle資料庫解鎖

microsoft windows 版本 10.0.14393 c 2016 microsoft corporation。保留所有權利。c windows system32 sqlplus nolog sql plus release 10.2.0.1.0 production on 星期日 7月 ...

資料庫 Oracle中建立資料庫

create database lihua 網上的說法是 oracle中的例項只對應乙個資料庫,出現此種情況說明oracle資料庫處於mount 裝載 或open狀態,需要使用startup nomount語句進行狀態更改,或者是直接使用dbca的圖形介面來建立 注 經測試,startup nomo...

資料庫 關於Oracle中 萬用字元的使用

在oracle中使用萬用字元查詢時,發現在萬用字元中帶有 表示範圍時相應資料無法顯示,但不會報錯,假如我想查詢名字中帶有字母o的人,以下兩條語句的作用是一樣的 select from employees copy t where t.first name not like o select from...