Я наткнулся на два запроса и подумал, что смысл этих двух запросов приведет к одним и тем же ответам. Однако кажется, что ответы были бы неправильными, если бы из-за NULL ... но я не уверен, как именно эти два результата будут выглядеть по-разному.

Запрос A

select count(*)
from person
where person.height < 156 or person.height => 156;

А также

Запрос B

select count(*)
from person;

Я знаю, что select count (*) означает печать, а также подсчет NULL. Однако я не уверен, будет ли что-то другое, когда также будет указано условие where.

1
Learner_15 19 Окт 2020 в 17:15

1 ответ

Лучший ответ

Если в столбце person.height есть нули, то эти строки не будут учитываться вашим первым запросом.

Это связано с тем, что null - это флаг, а не значение, и поэтому он не может возвращать истину ни для одного оператора сравнения значений. Таким образом, он ни больше, ни меньше, ни равен чему-либо (включая другой ноль). Единственный тест, для которого пустой null может вернуть TRUE, - это такой, как person.height IS NULL.

1
RBarryYoung 19 Окт 2020 в 14:58