昨天调试一个实现查询功能的程序故障,确认问题出在代码无法判断某字段为NULL的情况。打开sql查询分析器,看到记录中分明是NULL,但是我的代码愣是判断不出。折腾了一阵,我十分惊讶的发现数据库中此字段竟然是字符串形式的“NULL”!
对于新手而言,将 SET something=NULL 写成 SET something='NULL' 倒也不是什么稀奇事儿,甚至他们本来就不清楚NULL到底为何物,就当作字符串得了。如果在代码中也写成 if (str == "NULL") 呢? 哈哈,可能真的不会出问题。
.net的字符串操作是如此清爽,以至于有人都忘了字符串是由字符组成的了。那么NULL呢?是字符串?字符?0?来自外太空的地址?如果有机会招聘新员工的话,我觉得应该问问这个问题。