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