首页 > 编程 > VBScript > 正文

vbs中Empty和Null的区别

2020-06-26 18:07:55
字体:
来源:转载
供稿:网友
empty关键字指用于指明未初始化的变量值,与NULL不同 
NULL关键字指用于指明变量包含的数据无效,与empty不同 
实例: 
dim p 
'此时,  
isempty(p) 为 true 
isNull(p) 为 null 
再例如,在在数据库里读出记录的一个的某个字段ppp值是 null ,该字段没有数据 
p=rs("ppp") 
此时 isNull(p)=true 
再说一个容易模糊的东东(可能也是大家费解的地方) 
vbs 在没有option explicit时允许不声明变量就使用变量赋值 
如 没有dim p 而直接 
p="aaa" 第一次遇上时就会隐式的去定义变量p,可能在这儿产生费解, 
------------- 
其一: 
dim p 
isempty(p) 为 true 
isNull(p) 为 false 
显示定义了变量 
--------------- 
其二: 
isempty(p) 为 true 
isNull(p) 为 false 
必须在没有强制声明option explicit的前提下,否则程序不允许继续运行 
隐式的定义变量,隐式定义发生在第一次对变量的使用 
当没有显式的dim p时,第一次使用p 时就会实际的 运行机制==> 
isempty(p) 
(搜索函数作用域,没有定义,再搜索全局作用域,也没定义!!ok 先定义一下 dim p) 
然后再 
isempty(p) 
实际就是 
isempty(p)  
---> 
( p ? ----> no dim p ----> dim p )  
----> 
isEmpty(p) 
isNull(p) 
所以程序的处理结果 isNull(p)==false 而不是 true 
null 不太好抓住它,怎么判断他? 
------- 
p=null  
isNull(p)=true 
现在奇怪,怎么p是初始化了,怎么又isNull(p)=true,因为发生在将 null 赋给 p,用 p变量代表不存在的数据 
更明确的说,此时用“啥也没有的东西”由p来表示 
-------- 
那什么时候才有isnull 为 true 哩? 
例如在发生数据库对象数据调用时有出现,数据库的列允许 null  
(更糟糕的是!!SQL server2000里的中文翻译null此时又称其叫“空值”,糊涂,所有原因发生在翻译上,所以要多用,才能理解empty,null真正的区别,不要在汉字翻译上去混淆,而且不同的语言对null empty的处理有有些差别) 
“真空”可以叫empty 
而null 连“真空”也没有 
这本身是两个很抽象的概念!! 
再举一个例子以加深Null 和Empty 的认识 
如下有两个表,A表有三个记录,均有实际数据,B表有两个记录,第二个记录“B字段1” 
是空字符;A表和B表的 aID bID 都是自动编号的字段,不允许填充Null 
表A | 表B 
__________________ |________________________________ 
aID A字段 | bID B字段  
1 AAA1 | 1 BBB1 
2 AAA2 | 2  
3 AAA3 |  
___________________________________________________ 
由aID和bID限定A left outer Join B 的结果 
(select * From A left join B on A.aID=B.bID) 
___________________________________________________ 
aID A字段1 bID B字段1  
1 AAA1 1 BBB1 
2 AAA2 2  
2 AAA2 3 Null 
___________________________________________________ 
分析上面的结果: 
A left join B是强制B表匹配 A表输出记录集,不管B表的bid是否存在于A表中! 
这样一来,B表的 bid=1 bid=2均匹配 A的 aID=1 aID=2,于是bID的相应数据原样出现在结果集中! 
而记录号 bID=3 的记录在 B表不存在,有于要求强制匹配入联合结果集,此时基于on A.aid=B.bID 的条件,就用 B.bid=A.aID 出现在B表的联合输出结果列,而“B字段1”的 
第三个记录不存在,此时联合结果集中就只能是标识为 null ---//不存在的数据// 
而记录2的空字符则继续填充为空字符号 
通过这个例子咳一看到 null 使用上的真正含义 
空字符在数据中,相当于有一个空的座位 
而null 就连这个空的座位也没有 
再例: 
1:AAA 2: BBB 3: 4:DD ' 3: 的地方是Empty 
1:AAA 2:BBB 4:DD '连标明座位号的3: 都没有,那儿就是一个null 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表