以下SQL查询中什么时候计入NULL
When is the NULL counted in the following SQL query
我遇到了两个查询,我认为这两个查询的含义会导致相同的答案。但是,如果由于 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 是一个标志而不是一个值,因此它不能 return 对任何 value-comparison 运算符为真。因此它既不大于,也不小于,也不等于任何东西(包括另一个空值)。唯一可以 return TRUE 的空值测试是 person.height IS NULL
.
我遇到了两个查询,我认为这两个查询的含义会导致相同的答案。但是,如果由于 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 是一个标志而不是一个值,因此它不能 return 对任何 value-comparison 运算符为真。因此它既不大于,也不小于,也不等于任何东西(包括另一个空值)。唯一可以 return TRUE 的空值测试是 person.height IS NULL
.