Причина в том, что вы сейчас имеете дело с трехзначной логикой .
- для оператора AND (будь то & или &&) результат выражения может быть определен при первом совпадении для FALSE.
- для оператора ИЛИ (будь то | или ||) результат выражения может быть определен при первом совпадении для ИСТИНА.
- для любой логической операции, имеющей самый левый операнд NULL, вернется NULL.
Таким образом, таблицы, которые вы перечислили, являются неполными: вам нужно больше записей, чтобы увидеть, что произойдет, когда есть 8 возможных комбинаций ввода (девять, если вы считаете комбинацию null operator null
).
И
X | Y | X & Y
---------------------------
true null null
null true null
false null false
null false null
true false false
true true true
false true false
false false false
OR
X | Y | X | Y
---------------------------
true null true
null true null
false null null
null false null
true false true
true true true
false true true
false false false
Используя вашу friends
аналогию, вы могли бы сказать, что для трехзначной логики AND предпочитает FALSE и NULL в качестве результата, тогда как OR предпочитает TRUE и NULL.