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 document.write(IsNull(x) & "<br />")x=10 document.write(IsNull(x) & "<br />")x=Empty document.write(IsNull(x) & "<br />")x=Null document.write(IsNull(x)) 输出: False False False True |
下面的示例利用 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 = "" str = null dim str as integer |
也就是部分语言中把数据中的0,字符中的空串,NULL值都作为空值的测试范畴。
但在C#等语言中的要求比较严格,VB中要求也不是很严格的。这里只要了解一个特殊的类型null类型,它的类当然也是null。同时有些语言上还有一种未定义型:
undefined类型,如在C#中:
string str ;
则string只有这一个的定义,所以它的值还没有真正被定义,此时它就是undefined类型的。这种类型常存在于C族语言和类C族如ECMAScript族(javascript等)及Java中!
补充:在数据库设计中可以规定某字段为null,这样如果不再给他赋值时,此记录即为null,但是在表格输出时,null记录将破坏表格的结构,即表格中的格线将消失,很多人在可能出现这种情况时,会在数据库中设默认值或在处理时给此记录赋一个空串。