当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > vbs中Empty和Null的区别

VBScript
一个实现VBS倒计时的代码
用vbs实现将剪切板的unix格式的内容处理成pc格式的代码
用vb和vbs 破解flashxp的密码的代码
用VBS实现的批量gb2312转utf-8,支持拖动
用vbs实现的XP序列号替换器
VBS可以做什么的简单说明
用vbs实现cmd功能的代码
VBS基础编程教程 (第1篇)
VBS基础编程教程 (第3篇)
VBS基础编程教程 (第4篇)
VBS基础编程教程 (第5篇)
VBS基础编程教程 (第6篇)
利用vbscript的for命令实现定时关机
在桌面右下角出现温馨提示的vbs冒泡程序
利用VBS发送邮件 挑选速度快的肉鸡做VPN 的vbs代码
vbs教程 chm下载
用vbs实现的简单的服务器文件备份办法压缩文件名自动按日期命名
输入mdb数据库即可将打包的mdb文件解包
VBS编程教程第一部
vbs脚本 加密 几个小细节小结下

VBScript 中的 vbs中Empty和Null的区别


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 63 ::
收藏到网摘: n/a

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