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為空時則返回 張三 如果...