vbs中Empty和Null的區別

來源:互聯網
上載者:User

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”
是Null 字元;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 使用上的真正含義
Null 字元在資料中,相當於有一個空的座位
而null 就連這個空的座位也沒有
再例:
1:AAA 2: BBB 3: 4:DD ' 3: 的地方是Empty
1:AAA 2:BBB 4:DD '連標明座位號的3: 都沒有,那兒就是一個null

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.