从查询某个字段替空值的记录说起

从查询某个字段为空值的记录说起

    错误类型:查询数据库出错.结果:没有记录.

    话说几天前需要查询字段为空值的记录,百度了一下,说用字段名is null,于是查出来后激动得在笔记中记上一笔:查询字段为空值的记录时...

    几天后再次用到这个方法,我清清楚楚地看到数据库中存在某条记录,然后想用select语句把它找出来,于是写了这样一条语句:

selectreturncash from cancelcard_info where statusis null andserid='1'

--无记录

    检查语法,拼写都没错,这个句子很简单嘛.于是很诧异,确定N次之后,怀疑应该是数据库出问题了.其实,数据库出问题才怪呢.最有可能是查询条件的问题.问同学,同学也不知道,建议我改改形式,一边猜一边试.然后:

select returncashfrom cancelcard_info where status ='null' and serid='1'

--有记录

    这下就知道问题出在"null".于是看了下设计时该字段是否允许空值,结果很巧,一个允许了一个不允许.于是以为根源在这里.

    当我第三次写这样一个语句查询时,发现无论允许空值还是不允许,查询结果都是一样的--没记录.为什么?

数据库中字段名是不区分大小写的,但是属性值区分大小写.当我们没有填入记录时,默认为"Null",而有些我们自己写入时就是"null".如果查询的表刚好是系统默认的空值,则用is Null,查询我们自己写入的则用='null'.他们代表的意义是不一样的.

    说明一个道理,有时候我们不能太相信自己的经验,不过N多经验加起来还是可以相信的.一个Null值纠结了好几天.我还遇到一个无效使用Null的问题,至今未解决.还有一点想说的是,一个具体问题,我们一般会采用百度解决,因为方便,而且效率高.可是我发现在各论坛找同类问题的解决方法时,很郁闷.因为有过很多人遇到同样的问题,而且都在CSDN等各个论坛发帖了,但几乎没有正确的回答.我不解的是难道到最后楼主都没有解决吗?或许吧,但如果解决了为何不在结贴时附上完美的解决方案?