zoukankan      html  css  js  c++  java
  • T-SQL 聚合函数Count与NULL

    大家都知道聚合函数是做统计用的,而count函数是统计行数的,也就是满足一定条件记录的行数。

    下面我们来看下这个count与NULL的微妙关系。

    CREATE TABLE dbo.Student
    (
     Sno int  null
    ,Name nvarchar(23) 
    )
    INSERT INTO dbo.Student(Sno,Name)VALUES(1,'Jesse');
    INSERT INTO dbo.Student(Sno,Name)VALUES(2,'Jessca');
    INSERT INTO dbo.Student(Sno,Name)VALUES(3,'June');
    INSERT INTO dbo.Student(Sno,Name)VALUES(4,'Supper');
    INSERT INTO dbo.Student(Sno,Name)VALUES(NULL,'Mike');

    SELECT * FROM dbo.Student

    我们向表student插入了5条记录,其中一条的SNO为NULL。

    通常的一种方法是用count(*)

    SELECT COUNT(*) FROM dbo.Student
    SELECT COUNT(Name) FROM dbo.Student
    SELECT COUNT(Sno) FROM dbo.Student
    SELECT COUNT(1) FROM dbo.Student

    Result:

    大家会疑惑这种结果。为什么count(1)会是5.下面我们来研究下下面的几个查询。

    SELECT * FROM dbo.Student
    SELECT Name FROM dbo.Student
    SELECT Sno FROM dbo.Student
    SELECT 1 FROM dbo.Student
    

      

    select 1 是显示结果和表中结果总行数行匹配的,不管是不是NULL。 但是SNO里面有一个NULL,编译器就识别这条记录是无效的。

    以上理解仅仅是个人体会,有可能不是太专业,或者有很多错误,还行大路大神多多指教。

  • 相关阅读:
    第十二周进度表
    第一个冲刺周期-第十天
    第一个冲刺周期-第九天
    团队作业—第二阶段06
    团队作业—第二阶段05
    团队作业—第二阶段04
    团队作业—第二阶段03
    团队作业—第二阶段02
    团队作业—第二阶段01
    对于风行小组第一阶段冲刺成果的概括
  • 原文地址:https://www.cnblogs.com/Jesse-Li/p/7137255.html
Copyright © 2011-2022 走看看