oralce處理null值的方法

2021-08-13 07:22:51 字數 1154 閱讀 8603

oracle在查詢是有可能出現null值,但是顯示的時候有不想顯示為null。

這裡提供幾種函式用於處理null值的顯示

第一種--null函式  返回表示式中第乙個不為null的表示式coalesce

select coalesce(null,9-9,null) from dual;

這種方式其實 的意思是,返回不是null的值,這種方式的好處在於,可以給予固定的順序,逐級的向下對比。返回的是最終不為null的方法,但是如果全部為null的話,可能就會有一些限制,他不會返回任何的值,於是就會返回乙個類似與null的空。

--第二種nvl

select nvl(null,0) from dual;

這種方式就可以完全的避免null值,當為null值的時候,就會返回0. 但是此種方法會有一種缺陷,就是引數一和引數二

必須滿足至少能夠隱式的轉換。列入下面的就會報錯:

--select nvl(12,'ab') from dual; 報錯 引數型別不一致  它會報無效的數字,因為'ab'無法變為數字型別。使用的時候需要注意。

--排除指定條件函式lnnvl

select * from city where lnnvl(cid>4);

這個函式會將city中cid大於4的資料過濾掉,相當於返回的資料為cid小於等於4的資料。

面試的時候遇到乙個問題,在這裡順手記下。面試的題目為,如果一張表中存在了多條相同的資料要刪掉其他多餘的資料,怎麼做到。從網上看到些方法,感覺不是特別的好。這裡在看書的時候無意中看到了乙個利用自連線的方式實現的。

這個面試題中由於資料相同你不能利用表中的資料來作為參考,所以只能利用資料庫中的rowid來作為參考實現。

select c.rowid from city c,city c1 where c.cid=c1.cid and c.rowid

這條sql可以返回rowid最小乙個rowid 那麼只需要稍稍改變下sql就可以返回出那些大於最小rowid的sql。

select * from city  a where a.rowid in (select c.rowid from city c,city c1 where c.cid=c1.cid and c.rowid>c1.rowid) ;

寫部落格,用於理解和記憶,總結自己學到的東西,必要時可以查詢,也希望能幫助到有需要的朋友。

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

oracle 排序中常用的null值處理方法 1 預設處理 oracle在order by 時預設認為null是最大值,所以如果是asc公升序則排在最後,desc降序則排在最前 2 使用nvl函式 nvl函式可以將輸入引數為空時轉換為一特定值,如 nvl employee name,張三 表示當em...

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

1 預設處理 oracle在order by 時預設認為null是最大值,所以如果是asc公升序則排在最後,desc降序則排在最前 2 使用nvl函式 nvl函式可以將輸入引數為空時轉換為一特定值,如nvl employee name,張三 表示當employee name為空時則返回 張三 如果不...

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

1 預設處理 oracle在order by 時預設認為null是最大值,所以如果是asc公升序則排在最後,desc降序則排在最前 2 使用nvl函式 nvl函式可以將輸入引數為空時轉換為一特定值,如 nvl employee name,張三 表示當employee name為空時則返回 張三 如果...