明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

如何正確處理數(shù)據(jù)庫(kù)中的Null

[摘要]對(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ì)你有幫助!