數據庫中 ’’ 和 NULL的區別


null不是對象,''是對象
從'',你就可以知道這是一個字符串類型的數據,是一個長度為零的字符串。
從NULL,你只能知道這里沒有賦過值,是空的,他不屬於任何數據類型。

我們在數據庫實際使用中,一般把字符串型變量默認為'',數值型變量默認為0,這樣才能保正在進行邏輯運算時不產生類型不匹配的錯誤。
SQL SERVER中函數為:ISNULL(變量,值),

對於整型變量,這樣去參加運算:
SET @VAR=1+ISNULL(整型變量,0)
對於字符型變量,這樣去參加運算:
SET @VAR=ISNULL(字符型變量,'')

ü  null不是值,它表示數值未知或者不確定

ü  null是一個屬性 ,表示其中無內容,而空是表示數值為空,但有默認值,可能為0.

ü  NULL的判斷不能簡單的用=或!= 只能使用IS (NOT) NULL來判斷.所以 is not null 和!=null的結果是完全不同的.雖然!=null編譯不會報錯,但是沒有人這樣來判斷某個字段為null

ü  在數據庫中,空值用來表示實際值未知或無意義的情況。因為空值表示缺少數據,所以空值和其它值沒有可比性,即不能用等於、不等於、大於或小於和其它數值比較,當然也包括空值本身(但是在decode中例外,兩個空值被認為是等價)。測試空值只能用比較操作符IS NULL 和IS NOT NULL。如果使用帶有其它比較操作符的條件表達式,並且其結果依賴於空值,那么其結果必定是NULL。在where條件中,Oracle認為結果為NULL的條件為FALSE,帶有這樣條件的select語句不返回行,也不返回錯誤信息。

ü  新增或修改記錄某字段為‘’時,到數據庫中此字段就是null(數據庫的缺省值也是null)查詢時,不能用 的方式,只能 is null或is not null  ???

ü  三者的區別就是:
isnull是一種類型測試,測試是否為空值(null)類型。
isEmpty是一種值測試,測試是否是空值。但這個不同語言中采用的方法不同。
=""是串測試,測試值是否為空值。

ü  創建數據庫的時候,對某個字段定義了 NOT NULL,但是,在寫入數據的時候,空字符串''也能寫入成功:

空 (NULL) 值表示數值未知。空值不同於空白或零值。沒有兩個相等的空值。比較兩個空值或將空值與任何其它數值相比均返回未知,這是因為每個空值均為未知。

在寫入數據的時候,空字符串'' 也是一個確定的值,所以就算你定義了 NOT NULL 也可以被寫入。

ü  在定義中說,空值不與任何值相等。因此不能使用 = null 做判斷。在Sql語句中,唯一可以使用 = null的就是update語句中的賦值語句,其他地方都不可以使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM