數據庫如何處理null 值

數據庫中null 值的含義:

在列中的值未知或缺失時,在關係數據庫中使用空值。 空既不是空字符串(對於 character 或 datetime 數據類型),也不是零值(對於 numeric 數據類型)

null是一個常量,僅在數值和字符串類型的列中有意義,代表的是沒有意義或者是不確定的值。

例如,學生選了課程,當成績沒有出來時grade字段的值應該爲空;或者工資表中一個行政人員在課時補貼一欄的值爲null,因爲它不可能有課時補貼的收入


數據庫中SQL處理null值:

1is null的結果爲true

2用ORDER BY子句對查詢結果按成績排序:

若按升序排,成績爲空值的元組將最後顯示,

若按降序排,成績爲空值的元組將最先顯示。

3空值不能被索引,所以查詢時有些符合條件的數據可能查不出來,count(*)中,用nvl(列名,0)處理後再查。 

4ANSI SQL-92 標準不支持 WHERE 子句中的 columnName = NULL。ANSI SQL-92 標準不支持 WHERE 子句中的 columnName = NULL。

oracle中處理null的相關博客:http://www.iteye.com/topic/454271


數據庫中與null值的相關運算

1. 爲空被視作未知,所以,對兩個空值進行彼此比較,其結果不被視爲相等。 在使用算術運算符的表達式中,如果任何操作數爲空,結果也爲空。

2.如果任何操作數或參數爲空,則所有算術運算符(+、-、*、/、%)、位運算符(~、&、|)和大多數函數都返回空,只有屬性 IsNull 除外。

3.邏輯運算

邏輯與(AND)算法

在and 邏輯表達式中,只要有F (假)其結果就爲F,如果沒有F,在AND邏輯表達式中有NULL的其結果就爲Null,只有當兩個條件都爲T時,其結果才爲T。

邏輯或(OR) 算法

在OR 邏輯表達式中,只要有T(真)其結果就爲T,如果沒有T,在OR 邏輯表達式中

有NULL的其結果就爲NULL,只有當兩個條件都爲F時,其結果才爲F。

邏輯非(NOT)算法

NOT T =F   NOT F=T    NOT NULL =NULL


數據庫中null值轉換

NVL空值轉換函數。

因爲與Null進行的算術運算均爲NULL,所以有此函數。

NVL函數用於把一空值(NULL)轉換成某一實際的值,格式如下:

NVL(表達式1,表達式2)

如果表達式1爲空值(NULL),NVL返回值爲表達式2的值,否則返回表達式1的值。表達式1和表達式2可以爲數字型、字符型或日期型,但二者必須一致。例如:

對數字型: NVL(comm,0)

對字符型:NVL (TO_CHAR(comm),’NO Comment’)

對日期型:NVL(hiredate,’31-DEC-99’)

有經驗的開發者經常用此函數來避免因空值(NULL )產生的錯誤。


其他null的相關知識:http://blog.csdn.net/perfect_db/article/details/11974737



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章