我在从一张桌子上计数时遇到了一个奇怪的问题。表名是Client并且有一个名为CardNo的varchar(200)列。数据库引擎是Intersystems Cache,查询语法是 SQL。
我在下面执行查询以获取拥有/不拥有 CardNo 的客户的数量。但是得到了意想不到的结果,如下所示。
select count(*) from Client
where CardNo is null
--Result: 38000
select count(*) from Client
where CardNo is not null
--Result: 78000
select count(*) from Client
--Result: 265000
没有 CardNo 的客户数是 38000。有 CardNo 的客户数是 78000。表中所有客户数是 265000,不等于 78000 + 38000。怎么会这样?根据文档,我的查询风格应该没有问题 http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_null