vbs中Empty和Null的區(qū)別
empty關(guān)鍵字指用于指明未初始化的變量值,與NULL不同
NULL關(guān)鍵字指用于指明變量包含的數(shù)據(jù)無效,與empty不同
實(shí)例:
dim p
'此時(shí),
isempty(p) 為 true
isNull(p) 為 null
再例如,在在數(shù)據(jù)庫(kù)里讀出記錄的一個(gè)的某個(gè)字段ppp值是 null ,該字段沒有數(shù)據(jù)
p=rs("ppp")
此時(shí) isNull(p)=true
再說一個(gè)容易模糊的東東(可能也是大家費(fèi)解的地方)
vbs 在沒有option explicit時(shí)允許不聲明變量就使用變量賦值
如 沒有dim p 而直接
p="aaa" 第一次遇上時(shí)就會(huì)隱式的去定義變量p,可能在這兒產(chǎn)生費(fèi)解,
-------------
其一:
dim p
isempty(p) 為 true
isNull(p) 為 false
顯示定義了變量
---------------
其二:
isempty(p) 為 true
isNull(p) 為 false
必須在沒有強(qiáng)制聲明option explicit的前提下,否則程序不允許繼續(xù)運(yùn)行
隱式的定義變量,隱式定義發(fā)生在第一次對(duì)變量的使用
當(dāng)沒有顯式的dim p時(shí),第一次使用p 時(shí)就會(huì)實(shí)際的 運(yùn)行機(jī)制==>
isempty(p)
(搜索函數(shù)作用域,沒有定義,再搜索全局作用域,也沒定義??!ok 先定義一下 dim p)
然后再
isempty(p)
實(shí)際就是
isempty(p)
--->
( p ? ----> no dim p ----> dim p )
---->
isEmpty(p)
isNull(p)
所以程序的處理結(jié)果 isNull(p)==false 而不是 true
null 不太好抓住它,怎么判斷他?
-------
p=null
isNull(p)=true
現(xiàn)在奇怪,怎么p是初始化了,怎么又isNull(p)=true,因?yàn)榘l(fā)生在將 null 賦給 p,用 p變量代表不存在的數(shù)據(jù)
更明確的說,此時(shí)用“啥也沒有的東西”由p來表示
--------
那什么時(shí)候才有isnull 為 true 哩?
例如在發(fā)生數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)調(diào)用時(shí)有出現(xiàn),數(shù)據(jù)庫(kù)的列允許 null
(更糟糕的是??!SQL server2000里的中文翻譯null此時(shí)又稱其叫“空值”,糊涂,所有原因發(fā)生在翻譯上,所以要多用,才能理解empty,null真正的區(qū)別,不要在漢字翻譯上去混淆,而且不同的語(yǔ)言對(duì)null empty的處理有有些差別)
“真空”可以叫empty
而null 連“真空”也沒有
這本身是兩個(gè)很抽象的概念??!
再舉一個(gè)例子以加深Null 和Empty 的認(rèn)識(shí)
如下有兩個(gè)表,A表有三個(gè)記錄,均有實(shí)際數(shù)據(jù),B表有兩個(gè)記錄,第二個(gè)記錄“B字段1”
是空字符;A表和B表的 aID bID 都是自動(dòng)編號(hào)的字段,不允許填充Null
表A | 表B
__________________ |________________________________
aID A字段 | bID B字段
1 AAA1 | 1 BBB1
2 AAA2 | 2
3 AAA3 |
___________________________________________________
由aID和bID限定A left outer Join B 的結(jié)果
(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
___________________________________________________
分析上面的結(jié)果:
A left join B是強(qiáng)制B表匹配 A表輸出記錄集,不管B表的bid是否存在于A表中!
這樣一來,B表的 bid=1 bid=2均匹配 A的 aID=1 aID=2,于是bID的相應(yīng)數(shù)據(jù)原樣出現(xiàn)在結(jié)果集中!
而記錄號(hào) bID=3 的記錄在 B表不存在,有于要求強(qiáng)制匹配入聯(lián)合結(jié)果集,此時(shí)基于on A.aid=B.bID 的條件,就用 B.bid=A.aID 出現(xiàn)在B表的聯(lián)合輸出結(jié)果列,而“B字段1”的
第三個(gè)記錄不存在,此時(shí)聯(lián)合結(jié)果集中就只能是標(biāo)識(shí)為 null ---//不存在的數(shù)據(jù)//
而記錄2的空字符則繼續(xù)填充為空字符號(hào)
通過這個(gè)例子咳一看到 null 使用上的真正含義
空字符在數(shù)據(jù)中,相當(dāng)于有一個(gè)空的座位
而null 就連這個(gè)空的座位也沒有
再例:
1:AAA 2: BBB 3: 4:DD ' 3: 的地方是Empty
1:AAA 2:BBB 4:DD '連標(biāo)明座位號(hào)的3: 都沒有,那兒就是一個(gè)null
欄 目:vb
下一篇:vbs+hta中實(shí)現(xiàn)在單個(gè) onClick 參數(shù)中包括多個(gè)子例程的代碼
本文標(biāo)題:vbs中Empty和Null的區(qū)別
本文地址:http://mengdiqiu.com.cn/a1/vb/7881.html
您可能感興趣的文章
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10VBS中的正則表達(dá)式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語(yǔ)法速查及實(shí)例說明
- 01-10VBS中Select CASE的其它用法
- 01-10VBScript教程 第七課使用條件語(yǔ)句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁(yè)面中添加VBscript代碼


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語(yǔ)法速查及實(shí)例說明
隨機(jī)閱讀
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實(shí)例總結(jié)