如何处理数据库中的Null
对于初学者, 在处理数据库中的 Null 数据型态是有一点麻烦的事, 在这篇文章文章中
我们将谈谈 Null , 你将会了解到如何知道一个值是 Null , 哪些函数可以或不可以处
理 Null
首先, 我们必须知道在 VBScript 中, Variant 是唯一的一种数据型态, 对于那些已经
熟悉其他语言的程序开发者, 可能会感到有点不习惯。使用 Variant 的好处在于其相当
有弹性, 因为 Variant 可以储存任何数据类型, 例如, 整数, 字符串, 日期时间, 甚至包
括对象及数组。然而弹性是必须付出代价的, 因为指定 Variant 可能会比指定特殊数据
类型所用到的内存来得多
在 Variant 数据类型中还有两种很特殊的子类型 (Subtype): Empty 及 Null, 事实上
称子类型可能不太恰当, 因为他们并不储存某些值, 当一个变量的数据子类型为 Empty
或 Null, 他们的值就是 Empty 或 Null
Empty
一个变量在被宣告后, 但在其被指定一个值之前, 这个变量的数据子类型就是 Empty,
换句话说, Empty 就相当于'尚未初始化', 我们来看看下面的例子
Dim varTest
Response.Write TypeName(varTest)
其执行结果应该为 Empty, 因此 Empty 可以说是一个变量的初始数据子类型及初始值,
Empty 只是代表一个变量的状态, 试试下面的例子
Dim varTest
Response.Write CLng(varTest)
Response.Write CStr(varTest)
第一行的程序将显示 0, 因为 Empty 被表示为整数时就是 0, 第二行执行之结果将是
什么都不显示, 因为当被表示为字符串时 Empty 就是 Empty, 或可说是长度为零的字符串
当一个变数被指定一个值后, 它便不再是 Empty, 它将是其他的子类型, 依数据的类型
而有所不同, 当然, 你还是可以利用 Empty 这个关键词将这变量变回 Empty 子类型
varTest = Empty
有两种方式你可以判断一个变量是否为 Empty
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
或
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
Null
Null 这个数据子类型 和 Empty 很类似, 但不同点在于 Empty 代表一个变量尚未被
初始化, 也就是还没有被赋予任何的值, 而一个变数为 Null 只有在你指定它为 Null
之后。最常遇到 Null 的机会应该是在处理数据库的时候, 当一个字段没有数据时,
便是 Null
指定和判断 Null 的方法与 Empty 很类似
varTest = Null
然而你只能使用 IsNull() 函数来判断 Null, 这是因为 Null 所代表的是不合法的资
料, 你可以试试以下的例子
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
执行的结果并不会显示 The variable has a Null value. 要判断一个变量是否为
Null 你应该使用 IsNull() 函数
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
当你在处理由数据库中所取出的 Null 的数据时, 你必须要很注意, 因为 Null 所代表
的是不合法的数据, 当某些函数在处理数学运算时, Null 可能会制造一些麻烦, 例如
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
执行结果你将看到 'Invalid Use of Null' 的错误讯息, 再看看下面的例子
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
你会发现, Null 加上 2 还是 Null
因此, 当你从数据库取得数据后, 你应先用 IsNull() 来判断字段是否为 Null, 再做
适当的处理, 例如
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![]() Microsoft MVP ASP/ASP.NET |
![]() topcat |