Oracle開發中遇到的非空問題小結
今日在使用oracle開發過程中遇到的一個小的問題,由於之前開發人員代碼中的疏忽,在記錄日誌的時候,因爲我們是調不同的運營商的接口,不同的運營商回調我們系統的接口,貌似不同運營商回調的接口是不同開發人員開發的,導致有一個記錄字段有的存儲了,有的沒有存儲,昨天在做報表的時候,要過濾掉某個運營商的信息,還好那個運營商的信息存儲了,信息存儲的變量值爲0,所以我就使用oracle的判斷條件某某字段不等於0,但是在發現結果的時候,數據量少的可憐,後來百度了一下,才發現oracle中如果字段爲空的話的,數據庫自動會幫你轉換爲0,所以那些沒有存儲上的字段在查詢的時候都被數據庫自動轉換爲0了,後來使用了oracle的一個函數解決了以上問題。
NVL
函數的介紹
函數格式:
NVL(expr1,expr2)
介紹:如果第一個參數爲空,那麼則顯示第二個參數的值,如果第一個參數不爲空,則顯示第一個參數本來的值。
另外在找到NVL
函數的時候發現了他的延伸函數
NVL2
函數的介紹
函數格式:
NVL(expr1,expr2)
介紹:如果第一個參數爲空,那麼則顯示第二個參數的值,如果第一個參數不爲空,則顯示第三個參數的值。
NULLIF
函數的介紹函數格式:
NULLIF(exp1,expr2)
介紹:如果exp1和exp2相等則返回空(NULL),否則返回第一個值。
Coalesce
函數
函數格式:Coalesce(expr1, expr2, expr3….. exprn)
介紹:表示可以指定多個表達式的佔位符。所有表達式必須是相同類型,或者可以隱性轉換爲相同的類型。返回表達式中第一個非空表達式,