如何正確處理數(shù)據(jù)庫中的Null
發(fā)表時間:2024-05-25 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]對于初學(xué)者, 在處理數(shù)據(jù)庫中的 Null 資料型態(tài)是有一點麻煩的事, 在這篇文章文章中我們將談?wù)?Null , 你將會了解到如何知道一個值是 Null , 哪些函數(shù)可以或不可以處理 Null 首先, 我們必須知道在 VBScript 中, Variant 是唯一的一種資料型態(tài), 對于那些已經(jīng)熟悉...
對于初學(xué)者, 在處理數(shù)據(jù)庫中的 Null 資料型態(tài)是有一點麻煩的事, 在這篇文章文章中我們將談?wù)?Null , 你將會了解到如何知道一個值是 Null , 哪些函數(shù)可以或不可以處理 Null 首先, 我們必須知道在 VBScript 中, Variant 是唯一的一種資料型態(tài), 對于那些已經(jīng)熟悉其它語言的程序開發(fā)者, 可能會感到有點不習(xí)慣。 使用 Variant 的好處在于其相當(dāng)有彈性, 因為 Variant 可以儲存任何數(shù)據(jù)類型, 例如, 整數(shù), 字符串, 日期時間, 甚至包括對象及數(shù)組。然而彈性是必須付出代價的, 因為指定 Variant 可能會比指定特殊數(shù)據(jù)類型所用到的內(nèi)存來得多
在 Variant 數(shù)據(jù)類型中還有兩種很特殊的子類型 (Subtype): Empty 及 Null, 事實上稱子類型可能不太恰當(dāng), 因為他們并不儲存某些值, 當(dāng)一個變量的資料子類型為 Empty 或 Null, 他們的值就是 Empty 或 Null
Empty
一個變量在被宣告后, 但在其被指定一個值之前, 這個變量的資料子類型就是 Empty, 換句話說, Empty 就相當(dāng)于"尚未初始化", 我們來看看下面的例子
Dim varTest
Response.Write TypeName(varTest)
其執(zhí)行結(jié)果應(yīng)該為 Empty, 因此 Empty 可以說是一個變量的初始資料子類型及初始值, Empty 只是代表一個變量的狀態(tài), 試試下面的例子
Dim varTest
Response.Write CLng(varTest)
Response.Write CStr(varTest)
第一行的程序?qū)@示 0, 因為 Empty 被表示為整數(shù)時就是 0, 第二行執(zhí)行之結(jié)果將是什么都不顯示, 因為當(dāng)被表示為字符串時 Empty 就是 Empty, 或可說是長度為零的字符串
當(dāng)一個變量被指定一個值后, 它便不再是 Empty, 它將是其它的子類型, 依資料的類型而有所不同, 當(dāng)然, 你還是可以利用 Empty 這 個關(guān)鍵詞將這變量變回 Empty 子類型
varTest = Empty
有兩種方式你可以判斷一個變量是否為 Empty
If varTest = Empty Then
Response.Write "The variable is empty."
End If
或是
If IsEmpty(varTest) Then
Response.Write "The variable is empty."
End If
Null
Null 這個資料子類型 和 Empty 很類似, 但不同點在于 Empty 代表一個變量尚未被初始化, 也就是還沒有被賦予任何的值, 而一個變量為 Null 只有在你指定它為 Null 之后。最常遇到 Null 的機會應(yīng)該是在處理數(shù)據(jù)庫的時候, 當(dāng)一個字段沒有資料時, 便是 Null
指定和判斷 Null 的方法與 Empty 很類似
varTest = Null
然而你只能使用 IsNull() 函數(shù)來判斷 Null, 這是因為 Null 所代表的是不合法的資料, 你可以試試以下的例子
Dim varTest
varTest = Null
If varTest = Null Then
Response.Write "The variable has a Null value."
End If
執(zhí)行的結(jié)果并不會顯示 The variable has a Null value. 要判斷一個變量是否為 Null 你應(yīng)該使用 IsNull() 函數(shù)
Dim varTest
varTest = Null
If IsNull(varTest) Then
Response.Write "The variable has a Null value."
End If
當(dāng)你在處理由數(shù)據(jù)庫中所取出的 Null 的資料時, 你必須要很注意, 因為 Null 所代表的是不合法的資料, 當(dāng)某些函數(shù)在處理數(shù)學(xué)運算時, Null 可能會制造一些麻煩, 例如
Dim varTest
varTest = Null
varTest = CLng(varTest)
執(zhí)行結(jié)果你將看到 "Invalid Use of Null" 的錯誤訊息, 再看看下面的例子
Dim varTest
Dim lngTest
varTest = Null
lngTest = 2 + varTest
Response.Write TypeName(lngTest)
你會發(fā)現(xiàn), Null 加上 2 還是 Null 因此, 當(dāng)你從數(shù)據(jù)庫取得資料后, 你應(yīng)先用 IsNull() 來判斷字段是否為 Null, 再做適當(dāng)?shù)奶幚? 例如
lngQty = oRs("Quantuty")
If IsNull(lngQty) Then
lngQty = 0
End If
希望這篇文章對你有幫助!