有時我們需要查詢出某欄位沒有值的全部記錄,那應該用rs("xx")=""還是IsNull(rs("xx"))呢?要得出結論,我們還得從頭說起:什麼情況下欄位中會沒有值?因為這和我們的結論關係密切。
一、什麼造成欄位中沒有值?
我們建一個表來測試下,表中只有兩個欄位id(自動編號)和aa(文本):
1.將aa欄位"允許Null 字元串"屬性設定為否,測試結果
引用內容rs("aa") = "mzwu.com" ---> 添加成功
rs("aa") = "" ---> 欄位 't8.aa' 不能是零長度的字串。
rs("aa")=Empty ---> 添加成功
rs("aa") = Null ---> 添加成功
2.將aa欄位"允許Null 字元串"屬性設定為是,測試結果
引用內容rs("aa") = "mzwu.com" ---> 添加成功
rs("aa") = "" ---> 添加成功
rs("aa")=Empty ---> 添加成功
rs("aa") = Null ---> 添加成功
經上邊測試後資料庫中表記錄如下:
從上邊的測試結果中我們不難得出結論,造成欄位沒有值可能是下邊四種情況之一:
● rs("aa") = ""
● rs("aa")=Empty
● rs("aa") = Null
● 當表中存在多個欄位時,部分欄位添加值,部分欄位未添加時也會造成欄位沒有值
二、rs("aa")="" or IsEmpty(rs("aa")) or IsNull(rs("aa"))
針對第一節結論中的四種情況,我們分別對其值用rs("aa")="" 、 IsEmpty(rs("aa")) 、IsNull(rs("aa"))進行測試,得出結果:
1.測試rs("aa") = ""
引用內容rs("aa")="" '結果True
IsEmpty(rs("aa")) '結果False
IsNull(rs("aa")) '結果False
2.測試rs("aa")=Empty
引用內容rs("aa")="" '結果-
IsEmpty(rs("aa")) '結果False
IsNull(rs("aa")) '結果True
3.測試rs("aa")=Null
引用內容rs("aa")="" '結果-
IsEmpty(rs("aa")) '結果False
IsNull(rs("aa")) '結果True
4.測試未添加值的欄位
引用內容rs("aa")="" '結果-
IsEmpty(rs("aa")) '結果False
IsNull(rs("aa")) '結果True
OK,現在我們已經不難得出結論了:
當使用rs("xx") = ""添加欄位值時,我們應用rs("xx")=""來判斷它是否沒值;
當使用rs("aa")=Null 或rs("aa")=Empty添加欄位值或沒給欄位添加值時,我們應用IsNull(rs("xx"))來判斷它是否沒值;
所以,為了得到準確的結果,當要查詢欄位沒有值的全部記錄時應使用:rs("xx")="" or IsNull(rs("xx"))
2007-09-14:對於沒有值的欄位,rs("xx")&""=""結果都為True,與添加方式無關,因而可直接用rs("xx")&""=""代替rs("xx")="" or IsNull(rs("xx"))