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語句中的賦值語句,其他地方都不可以使用。