ASP中我們經常會用到兩個參數就是isNull和isEmpty,在我們判斷某個字符串為空的時候使用。比如某個字符串是str1,經常我們用if isNull(str1) or isEmpty(str1) then來判斷,或者使用if str1="" then來判斷字符串是否為空。
有時候我們非常糾結,isNull、isEmpty和""空字符串到底有什麼區別呢?
isNull()
Null 值指出變量不包含有效數據。Null 與 Empty 不同,後者指出變量未經初始化。Null 與零長度字符串 ("") 也不同,零長度字符串往往指的是空串。
重點 使用 IsNull 函數可以判斷表達式是否包含 Null 值。在某些情況下想使表達式取值為 True,例如 IfVar=Null 和 IfVar<>Null,但它們通常總是為 False。這是因為任何包含 Null 的表達式本身就為 Null,所以表達式的結果為 False。
實例 1
代碼如下 dim x
下面的示例利用 IsNull 函數決定變量是否包含 Null:
Dim MyVar, MyCheck
MyCheck = IsNull(MyVar) ' 返回 False
MyVar = Null ' 賦為 Null
MyCheck = IsNull(MyVar) ' 返回 True
MyVar = Empty ' 賦為 Empty
MyCheck = IsNull(MyVar) ' 返回 False
isEmpty()
如果變量未初始化或顯式地設置為 Empty,則函數 IsEmpty 返回 True;否則函數返回 False。如果 exPRession 包含一個以上的變量,總返回 False。
下面的示例利用 IsEmpty 函數決定變量是否能被初始化:
代碼如下Dim MyVar, MyCheck
MyCheck = IsEmpty(MyVar) ' 返回 True。
MyVar = Null ' 賦為 Null。
MyCheck = IsEmpty(MyVar) ' 返回 False。
MyVar = Empty ' 賦為 Empty。
MyCheck = IsEmpty(MyVar) ' 返回 True。
3。零長度字符串 ("")
零長度字符串往往指的是空串。
str="",將空字符串賦給str變量,已經賦值了,且賦的是字符
三者的區別就是:
isnull是一種類型測試,測試是否為空值(null)類型。
isEmpty是一種值測試,測試是否是空值。但這個不同語言中采用的方法不同。
=""是串測試,測試值是否為空值。
說一個isEmpty吧,在有些語言中isEmpty是一種空值測試,它可以測試以下內容:
代碼如下dim str as string
isEmpty(str)=True
str = ""
isEmpty(str)=True
str = null
isEmpty(str)=True
dim str as integer
str = 0
isEmpty(str) = True
也就是部分語言中把數據中的0,字符中的空串,NULL值都作為空值的測試范疇。
但在C#等語言中的要求比較嚴格,VB中要求也不是很嚴格的。這裡只要了解一個特殊的類型null類型,它的類當然也是null。同時有些語言上還有一種未定義型:
undefined類型,如在C#中:
string str ;
則string只有這一個的定義,所以它的值還沒有真正被定義,此時它就是undefined類型的。這種類型常存在於C族語言和類C族如ECMAScript族(javascript等)及Java中!
補充:在數據庫設計中可以規定某字段為null,這樣如果不再給他賦值時,此記錄即為null,但是在表格輸出時,null記錄將破壞表格的結構,即表格中的格線將消失,很多人在可能出現這種情況時,會在數據庫中設默認值或在處理時給此記錄賦一個空串。