今天说下SQL 中的NULL,先看个例子:
select * from T where NewHouseStage !=2
那么NewHouseStage 为null的记录能否查询出来......
答案是:不能! 你答对了吗,呵呵。
看下NULL 在SQL 中的定义: 概念上,NULL 意味着“没有值”或“未知值”。NULL 应该理解为“不确定”的意思,这样你是否明白一点了呢。也就是说未知的东东你还怎么查询呢,呵呵,暂且我们这么理解。
SQL 中NULL 值与任何其他值的比较(即使是NULL)永远为“假”!
下面用MYSQL坐下例子说明:
mysql> select NULL, 1+NULL, CONCAT('Invisible',NULL);
打印的结果值都是NULL。
对NULL的搜索不能用exp=NULL,应该用IS (NOT) NULL,或者IFNULL()。
另外:
1、使用DISTINCT、GROUP BY、ORDER BY 时,所有的NULL值将被视为同等的。使用order by asc 时 首先显示NULL列,如果是order by desc 时,NULL值显示在最后。
2、对于聚合(累计)函数,如COUNT(),MIN(),和SUM()时,将忽略NULL值。COUNT(*)是例外,因为COUNT(*)统计的是所有记录数。例如:下述语句产生两个计数。首先计数表中的行数,其次计数age列中的非NULL值数目:
mysql> SELECT COUNT(*), COUNT(age) FROM person;
3、如果将NULL插入TIMESTAMP列,将插入当前日期和时间。如果将NULL插入具有AUTO_INCREMENT属性的整数列,将插入序列中的下一个编号。