如何正确处理数据库中的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
希望这篇文章对你有帮助!
猜你喜欢
- 技巧1XmlNode.InnerText与.InnerXml的区别是:前者将内容中的<和>分别变成<和>,因此,希望
- SELECT表名=case when a.colorder=1 then d.name else '' end,表说明=ca
- 当鼠标移动上去后,字慢慢的变大的 效果应该 如果实现啊<!DOCTYPE html PUBLIC "-//W3C//DTD
- 今天突然想起这个问题, 就好好搜索整理一下,不过在开始归纳之前,请先来一起做做这个小实验:忽略一切实际的外在情况, 你看了下面的按钮,第一本
- 怎么增大MySQL数据库连接数,MYSQL数据库安装完成后,默认连接数是100,流量稍微大一点的论坛或网站这个连接数是不够哟用
- 首先.还是看效果.实现对文本域textarea中文字字数的限制。然后.米了...看文件.里面写的很清楚了.下面这个是单独的效果..提示用al
- 网上有很多关于PHP在IIS下配置的教程,但都是一些很理性化的东西,我从里面整理出来这个教程 发出来为了方便参考,有什么问题也可以大家一起交
- 可以把本功能写成一个函数,函数的处理过程描述如下:首先调用adodb.connection对象中的openSchema函数,这样会得到一个R
- server application error--IIS故障故障现象:Server Application Error The serve
- 方法一:<script language="JavaScript"> <!--
- 代码如下:CREATE DATABASE 临时的 ON ( NAME='临时的_Data', FILENAME='h
- 数据库计算机 databasecomputer 实现数据库的存储、管理和控制的一种专用计算机系统。它能十分快速而有效地完成各种数据库操作,并
- asp无组件上传VBS编写的大家见的多了,这个是纯javascript实现的上传,原来unicode可以解决读取位置的问题,这次真的是纯JS
- jQuery的makeArray有其局限性(1.3.4还有bug),我自己实现了一个,不过涉及N多辅助方法。var dom = {},_to
- 字符替换是一个非常重要的功能,javascript 中有一个 String.replace( ),但是此方法有
- 使用图层可以像素为单位精确定位页面元素,并且可以将层放置在页面的任意位置。当把页面元素放入图层之中时,还可以控制哪个显示在前面、哪个显示在后
- 我们在编写asp程序时经常会使用到这个功能,一般我们这样判断如:if a="" then ,而这个函数考虑的就比较全面了
- 现在电子商务网站的设计,正面临着一系列的挑战,其中最主要的挑战是:我们尝试建立一种用户体验,来提高用户在线购物的可能性。为了对抗网上激烈的竞
- 本文将介绍使用Dreamweaver来制作滑动菜单的方法,言归正传,废话少说。准备工作如下: 1. 在dw中新建一个空白文档(或者打开你要添
- 两个并发事务同时访问数据库表相同的行时,可能存在以下三个问题:1、幻想读:事务T1读取一条指定where条件的语句,返回结果集。此时事务T2