查询返回不加起来的结果

时间:2015-05-03 16:55:45

标签: sql sqlite

sqlite> select count(*) from authors;
1274360
sqlite> select count(*) from authors where length(Name)<1;
0
sqlite> select count(*) from authors where length(Name)>=1;
516738

以上没有意义。任何人都可以解释为什么第二个和第三个查询不能给我表中的所有行?

我知道没有一个名字在其中有NULL,但只是为了确保我查询它并且它也返回0

sqlite> select count(*) from authors where Name==NULL;
0

1 个答案:

答案 0 :(得分:1)

以下查询为您提供作者总数     您表中的1274360作者

sqlite> select count(*) from authors;
1274360

以下查询为您提供名称长度小于1并且您的查询给出0计数的作者的总计数,因为在您的作者表中您没有名称长度小于的作者1

sqlite> select count(*) from authors where length(Name)<1;
0

以下查询为您提供名称长度大于等于1并且您的查询给出516738计数的作者的总计数,因为在您的作者表中您有这样的作者,其名称长度大于和等于1

sqlite> select count(*) from authors where length(Name)>=1;
516738

以下查询为您提供名称为空的作者的总计数 并且你没有任何作者,这就是你得到0

的原因
sqlite> select count(*) from authors where Name =NULL;
0
  

注意:对于Null检查你应该做这样的事情

sqlite> SELECT COUNT(*) FROM authors WHERE Name IS NULL;
      /* to get count of  all not null name use IS NOT NULL */
sqlite> SELECT COUNT(*) FROM authors WHERE Name IS NOT NULL;