我遇到了两个查询,并认为这两个查询的含义会导致相同的答案。然而,如果由于NULL,答案似乎是错误的。。但我不确定这两个结果会有什么不同。
查询A
select count(*)
from person
where person.height < 156 or person.height => 156;
和
查询B
select count(*)
from person;
我知道select count(*(的意思是在计算NULL的同时进行打印。然而,我不确定在给定where条件的情况下是否会有任何不同。
如果person.height
列中有null,那么第一个查询将不会计算这些行。
这是因为null是一个标志,而不是一个值,因此它不能为任何值比较运算符返回true。因此,它既不大于,也不小于,也不等于任何东西(包括另一个null(。裸null唯一可以返回TRUE的测试是类似person.height IS NULL
的测试。