用decode和nvl處理null值時需要注意的地方
測試table的記錄如下:
SQL> select * from testnvl;
ID FAB MONTH
---------- ---------- --------
2112 S1 2010-06
234 S2 2010-06
0 S3 2010-06
需要根據FAB和MONTH的值從表裡查ID,如果有值的顯示原值,如果沒有或為0的顯示成1。
SQL如下:
select decode(id,null,1,0,1,id) from testnvl where......
測試結果:
SQL> select decode(id,null,1,0,1,id) from testnvl where fab='S1' and month='2010-06';
DECODE(ID,NULL,1,0,1,ID)
------------------------
2112
SQL> select decode(id,null,1,0,1,id) from testnvl where fab='S3' and month='2010-06';
DECODE(ID,NULL,1,0,1,ID)
------------------------
1
SQL> select decode(id,null,1,0,1,id) from testnvl where fab='S4' and month='2010-06';
no rows selected
從以上結果可看出,在沒有符合條件的ID時,SQL並沒有按照預期返回1。如果對返回的ID做一下處理,比如加個sum,結果就會改變:
SQL> select decode(sum(id),null,1,0,1,sum(id)) from testnvl where fab='S4' and month='2010-06';
DECODE(SUM(ID),NULL,1,0,1,SUM(ID))
----------------------------------
1
這就是想要的結果了。
為什麼加了sum和不加sum會有區別呢,因為decode, nvl等函式是在返回的record上進行計算的,不加sum時返回記錄數為0,所以是不會對其做decode,nvl的判斷的。加了sum之後,返回記錄數為1,只是返回值為null,這樣就可以用decode和nvl進行判斷了:
SQL> select id from testnvl where fab='S4' and month='2010-06';
no rows selected
SQL> select sum(id) from testnvl where fab='S4' and month='2010-06';
SUM(ID)
----------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7919512/viewspace-1036751/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SAP打補丁時需要注意的地方
- FastJson 序列化處理 null 值ASTJSONNull
- 【C#】-對於Null值的處理方法C#Null
- 離職那些需要注意的地方
- distinct 去重需要注意的地方
- 進行爬蟲的時候需要注意哪些地方?爬蟲
- PHP 去除 bom 頭,JSON_decode () 返回 NULL,PHP 無法對字串做處理PHPJSONNull字串
- 箭頭函式適用場景及需要注意的地方函式
- equals中關於空格需要注意的地方
- 【Redis】redis-cluster需要注意的幾個地方Redis
- Go 1.16 中關於 go get 和 go install 你需要注意的地方Go
- 使用MVCPager做AJAX分頁所需要注意的地方MVC
- cmake混編.c和.cpp需要注意的地方--指定兩種編譯器編譯
- 運用mysqldump 工具時需要注意的問題MySql
- 開發網路影片直播系統需要注意的地方
- RationalDMIS7.1 定義校驗規需要注意的地方
- 選擇雲伺服器有哪些需要注意的地方?伺服器
- PHP JSON_decode 返回為 null 問題PHPJSONNull
- BigDecimal使用注意的地方Decimal
- Java基礎系列(三十六):泛型中需要注意的地方Java泛型
- 平臺接入美顏SDK工具有哪些需要注意的地方?
- Windows批處理中的變數和值Windows變數
- Java--- 關於null的處理若干方法JavaNull
- 字串和日期時間的處理字串
- 物件轉json字串的過程中對value為null的值的一些處理物件JSON字串Null
- 藍橋杯注意的地方
- 一個優秀的雲原生架構需要注意哪些地方架構
- 刷題時需要的注意事項
- Java 中關於 null 物件的容錯處理JavaNull物件
- jQuery中使用$.each()遍歷陣列時要注意的地方jQuery陣列
- 【NULL】Oracle null值介紹NullOracle
- 微信企業付款介面PHP開發需要注意的兩個地方PHP
- mysql 空值(null)和空字元('')的區別MySqlNull字元
- abp的application service形成的restful api 和nswagger的整合時, 返回值為nullAPPRESTAPISwaggerNull
- 原始碼分析springboot自定義jackson序列化,預設null值個性化處理返回值原始碼Spring BootNull
- Python 影像處理 OpenCV (6):影像的閾值處理PythonOpenCV
- 處理多個會話時的 Cookie 和 Headers 複用問題會話CookieHeader
- 處理多個會話時的 Cookie 和 Headers複用問題會話CookieHeader
- sql 統計多個欄位的和(如果欄位中含有 null 的處理)SQLNull