Какое условие фильтра тождественно ложно (никогда не выполнится) для флага is_paying, который принимает только 0 или 1?
A
is_paying = 1 OR is_paying = 0B
NOT (is_paying = 1) OR is_paying = 1C
is_paying = 1 OR NOT (is_paying = 0)D
is_paying = 1 AND is_paying = 0Правильный ответ. Условие
is_paying = 1 AND is_paying = 0 — противоречие: флаг не может одновременно равняться двум значениям.Разбор
Флаг не может одновременно равняться 1 и 0, поэтому условие is_paying = 1 AND is_paying = 0 никогда не выполнится — это противоречие. Такие условия иногда появляются при неверной склейке фильтров через AND или при попытке одновременно потребовать два взаимоисключающих сегмента. Распознавание тождественно ложных условий помогает понять, почему запрос возвращает пустой результат, и быстро найти ошибку логики. Противоположный случай — is_paying = 1 OR is_paying = 0 — наоборот, тождественно истинно для любой определённой строки.
Проверь себя · 1/3разбор после ответа
Условие в фильтре записали как
NOT (NOT (is_test_user = 1)). Какое более простое условие ему эквивалентно?Ещё вопросы по теме «Булева логика и фильтры»
- Какому выражению со скобками эквивалентно условие `is_new = 1 OR is_paying = 1 AND has_coupon = 1`, если `AND` выполняется раньше `OR`?
- В фильтре написали `country = 'RU' AND device = 'ios' OR device = 'android'`. Какой набор строк реально пройдёт фильтр при стандартном приоритете, где `AND` сильнее `OR`?
- Какое условие эквивалентно `NOT (is_paying = 1 AND has_subscription = 1)` по правилу де Моргана? Выберите запись через `OR`.
- Вы хотите выбрать строки, которые не относятся к `country = 'RU' OR country = 'KZ'`. Какое выражение соответствует `NOT (country = 'RU' OR country = 'KZ')` по правилу де Моргана?
- В таблице пользователей есть флаги `has_email_optin` и `has_push_optin` (0 или 1). Нужно выбрать пользователей, у которых включён ровно один канал (email или push, но не оба). Какое условие корректно?
- Все вопросы по «Булева логика и фильтры» →