Логические операторы
Логические (булевы) операторы в Microsoft Access используются для объединения нескольких выражений сравнения в одно логическое условие. Они позволяют создавать сложные критерии фильтрации и управления данными.
Список логических операторов
- And - логическое И (конъюнкция), истина, если оба выражения истинны.
- Or - логическое ИЛИ (дизъюнкция), истина, если хотя бы одно выражение истинно.
- Not - логическое отрицание, меняет значение на противоположное.
- Xor - исключающее ИЛИ, истина, если только одно из выражений истинно.
- Eqv - логическая эквивалентность, истина, если оба выражения равны (оба True или оба False).
- Imp - логическая импликация, истина, если первое выражение ложно или оба истинны.
Использование логических операторов в Access
Логические операторы используются в:
- Запросах - фильтрация данных по сложным условиям.
- Фильтрах - отбор записей в таблицах.
- VBA-коде - управление логикой выполнения программ.
Примеры логических выражений
- Выборка товаров дороже 500 и имеющихся в наличии:
SELECT * FROM Товары WHERE Цена > 500 AND Количество > 0;
- Фильтр клиентов из Москвы или Санкт-Петербурга:
SELECT * FROM Клиенты WHERE Город = 'Москва' OR Город = 'Санкт-Петербург';
- Выборка сотрудников, которые НЕ являются менеджерами:
SELECT * FROM Сотрудники WHERE NOT Должность = 'Менеджер';
Таблица значений логических операторов
В таблице 4.4 показано, как логические операторы работают с различными значениями.
A=True, B=False | A=True, B=True | A=False, B=False | A=False, B=True | |
A And B | False | True | False | False |
A Or B | True | True | False | True |
Not A | False | False | True | True |
A Xor B | True | False | False | True |
A Eqv B | False | True | True | False |
A Imp B | False | True | True | True |
Таблица 4.4. Зависимость значений логических операторов от значений операндов
Работа с NULL-значениями
При работе с логическими операторами и значением NULL результат может отличаться. В таблице 4.5 приведены результаты для оператора Imp.
A=Null, B=False | A=Null, B=True | A=False, B=Null | A=True, B=Null | A=Null, B=Null | |
A Imp B | Null | True | True | Null | Null |
Таблица 4.5. Значения оператора Imp с NULL-значениями
Логические операторы и побитовое сравнение
В Microsoft Access, если хотя бы один операнд не является логическим значением (True, False или Null), логические операторы выполняют побитовое сравнение выражений. Это означает, что операторы анализируют каждую пару битов операндов по отдельности.
Таблица значений логических операторов для однобитовых операндов
В таблице 4.6 показано, как логические операторы работают при побитовом сравнении.
бит A=1, бит B=0 | бит A=1, бит B=1 | бит A=0, бит B=0 | бит A=0, бит B=1 | |
A And B | 0 | 1 | 0 | 0 |
A Or B | 1 | 1 | 0 | 1 |
Not A | 0 | 0 | 1 | 1 |
A Xor B | 1 | 0 | 0 | 1 |
A Eqv B | 0 | 1 | 1 | 0 |
A Imp B | 0 | 1 | 1 | 1 |
Таблица 4.6. Значения логических операторов при побитовом сравнении
Дополнительные примеры использования
- Выборка клиентов, которые сделали заказ в 2023 году, но не из Москвы:
SELECT * FROM Заказы WHERE Год([Дата]) = 2023 AND NOT Город = 'Москва';
- Выборка сотрудников, которые либо менеджеры, либо работают более 5 лет:
SELECT * FROM Сотрудники WHERE Должность = 'Менеджер' OR DateDiff("yyyy", [Дата найма], Date()) > 5;
- Фильтр заказов, в которых либо сумма заказа превышает 10 000, либо дата доставки ещё не наступила:
SELECT * FROM Заказы WHERE Сумма > 10000 OR [Дата доставки] > Date();
Заключение
Логические операторы позволяют создавать сложные условия отбора записей в Microsoft Access. Они применяются в запросах, фильтрах, макросах и VBA. Помимо стандартных логических операций, Access поддерживает побитовое сравнение, которое полезно при работе с двоичными данными.