如何正确处理数据库中的Null

时间:2007-09-30 19:41:00 

asp之家注:对于ACCESS数据库中的NULL,经常我们直接判断该字段是否为空用的是:name="",但是这个还不够,因为""不等于null。比如我们要判断name字段的值是空的时候,就附一个初始的值:


if rs("name")="" then 
         response.write "佚名"
      else 
         response.write rs("name")
      end if


如果你是用上面的代码的话,就很有可能漏过很多数据库中为空的name。为了保险我一般使用:


if rs("name")=""  or isnull(rs("name")) then 
         response.write "佚名"
      else 
         response.write rs("name")
      end if


对于初学者, 在处理数据库中的 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 

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 的机会应该是在处理数据库的时候, 当一个字段没有资料时, 便是 Null 指定和判断 Null 的方法与 Empty 很类似 。

varTest = Null  


然而你只能使用 IsNull() 函数来判断 Null, 这是因为 Null 所代表的是不合法的资料, 你可以试试以下的例子:

Dim varTest  
varTest = Null  
If varTest = Null Then  
Response.Write "The variable has a Null value."  
End If  


执行的结果并不会显示 The variable has a Null value. 要判断一个变量是否为 Null 你应该使用 IsNull() 函数:

Dim varTest  
varTest = Null  
If IsNull(varTest) Then  
Response.Write "The variable has a Null value."  
End If  


当你在处理由数据库中所取出的 Null 的资料时, 你必须要很注意, 因为 Null 所代表的是不合法的资料, 当某些函数在处理数学运算时, Null 可能会制造一些麻烦, 例如:

Dim varTest  
varTest = Null  
varTest = CLng(varTest)  


执行结果你将看到 "Invalid Use of Null" 的错误讯息, 再看看下面的例子 

Dim varTest  
Dim lngTest  
varTest = Null  
lngTest = 2 + varTest  
Response.Write TypeName(lngTest)  


你会发现, Null 加上 2 还是 Null 因此, 当你从数据库取得资料后, 你应先用 IsNull() 来判断字段是否为 Null, 再做适当的处理, 例如 

lngQty = oRs("Quantuty")  
If IsNull(lngQty) Then  
lngQty = 0  
End If  


希望这篇文章对你有帮助!  


标签:null,数据库
0
投稿

猜你喜欢

  • 纯ASP结合VML生成完美图-柱图

    2010-05-11 16:48:00
  • 通向MySQL神秘王国的图形化之路

    2008-12-08 13:43:00
  • WEB2.0时代活动类网页我们该如何设计?

    2009-12-16 12:19:00
  • 常见SQL Server 2000漏洞及其相关利用

    2007-10-01 14:45:00
  • Host localhost is not allowed to conn

    2011-02-23 12:41:00
  • [译]艺术和设计的差异 (2)

    2009-10-15 12:36:00
  • 如何增大MYSQL数据库连接数

    2010-10-25 20:28:00
  • 正则表达式简介

    2007-08-12 18:01:00
  • 科学设计你的网站网页

    2008-03-16 13:48:00
  • IE 8 提出“超级标准模式”

    2008-01-24 19:26:00
  • asp实现页面延迟运行的两个简单方法

    2007-10-16 13:49:00
  • 账户名和密码漏输或误输的文字提示

    2009-06-24 14:28:00
  • 构建成功web应用的十项黄金法则

    2010-09-17 19:11:00
  • 得到元素真实的背景颜色的函数

    2008-05-20 12:04:00
  • CSS资料中常见英语词语翻译整理

    2008-08-29 12:50:00
  • 数据库备份过程中经常遇到的九种情况

    2008-12-26 16:38:00
  • asp如何直接调用后台存储过程?

    2010-06-28 18:27:00
  • 快速解决 MySQL中与浮点比较有关的问题

    2008-11-27 16:28:00
  • 如何编写一个过滤掉HTML代码的函数?

    2009-11-08 18:53:00
  • css教程–十步学会用css建站(全)[翻译]

    2008-06-05 18:35:00
  • asp之家 网络编程 m.aspxhome.com