现在的位置: 首页 > 综合 > 正文

【原创】SQL 中 NULL 的解读

2014年02月09日 ⁄ 综合 ⁄ 共 763字 ⁄ 字号 评论关闭

 

 今天说下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属性的整数列,将插入序列中的下一个编号。

 

抱歉!评论已关闭.