当前位置: 代码迷 >> VB >> 为啥数据库中【价格】字段(文本型)是空的,ISNULL(rs.fields("价格"))的结果却是FALSE
  详细解决方案

为啥数据库中【价格】字段(文本型)是空的,ISNULL(rs.fields("价格"))的结果却是FALSE

热度:9408   发布时间:2013-02-26 00:00:00.0
为什么数据库中【价格】字段(文本型)是空的,ISNULL(rs.fields("价格"))的结果却是FALSE
为什么数据库中【价格】字段(文本型)是空的,ISNULL(rs.fields("价格"))的结果却是FALSE

------解决方案--------------------------------------------------------
你的代码就说明你没理解ISNULL的用法,人家是要两个参数的:
http://database.51cto.com/art/201009/224323.htm
SQL中的ISNULL函数介绍
------解决方案--------------------------------------------------------
你有可能价格是" "空格,是不是char型的?
------解决方案--------------------------------------------------------
可以debug.print asc(rs![价格])看看ascii码是多少
------解决方案--------------------------------------------------------
估计你的数据库字段设置了默认值,默认是空字符
------解决方案--------------------------------------------------------
null和空,在视觉上是一样的。

如果你要判断,可以用:
len(r.fields(0).value & "")=0

如果是想取值,NULL时会报错,可以用:
s=r.fields(0).value & ""
------解决方案--------------------------------------------------------
那就说明记录当前字段是空串,但不是 Null。

------解决方案--------------------------------------------------------
估计不是NULL值,而是空格

------解决方案--------------------------------------------------------
为了容易理解,我们做一个假设:

你把一个字符串定义成如下的结构:

1 缓冲区的地址;
2 缓冲区的长度;
3 缓冲区。

你初始化时,将地址设为为一个无效值,将长度设置为 0.

读的时候,如果地址依然是无效值(没有实例化),那就是 NULL。也就是缓冲区不存在,还没有分配。通俗地说,你可以认为字符串还不存在。

如果缓冲区已经分配,长度是 0,那就是空串。你可以把他看成字符串值的一种特殊情况。



------解决方案--------------------------------------------------------
还有一种旁证的方法,你可以将此字段值赋给一个文本框的 Text 属性:

Text1 = rs.fields("价格")

如果报“非法使用 Null 值”错误,那就是 Null 了。

------解决方案--------------------------------------------------------
只是空串而已 ""

""不是null所以isnull为false
  相关解决方案