Формирование условных диапазонов с использованием операторов BETWEEN и NOT

Операторы BETWEEN и NOT BETWEEN в SQL используются для определения диапазонов значений в условиях фильтрации. Эти операторы позволяют удобно задавать условия, где значение должно находиться в пределах заданного диапазона или наоборот, не входить в указанный диапазон.

Оператор BETWEEN

Оператор BETWEEN используется для проверки, попадает ли значение в заданный диапазон. Данный оператор включает крайние значения диапазона.

Синтаксис

expression BETWEEN lower_bound AND upper_bound
  • expression — значение, которое проверяется на принадлежность диапазону.

  • lower_bound — нижняя граница диапазона.

  • upper_bound — верхняя граница диапазона.

Примеры использования BETWEEN

  1. Поиск значений в диапазоне

    SELECT * FROM employees WHERE salary BETWEEN 40000 AND 60000;

    Этот запрос вернет всех сотрудников, чья зарплата находится в диапазоне от 40,000 до 60,000 включительно.

  2. Поиск дат в диапазоне

    SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';

    Этот запрос вернет все заказы, сделанные в 2024 году.

  3. Поиск значений в диапазоне с текстовыми данными

    SELECT * FROM products WHERE price BETWEEN 10 AND 50;

    Этот запрос вернет все продукты, чья цена находится в диапазоне от 10 до 50 включительно.

Оператор NOT BETWEEN

Оператор NOT BETWEEN используется для фильтрации значений, которые не попадают в указанный диапазон. Этот оператор также включает крайние значения диапазона, но результаты будут противоположными по отношению к BETWEEN.

Синтаксис

expression NOT BETWEEN lower_bound AND upper_bound
  • expression — значение, которое проверяется на принадлежность диапазону.

  • lower_bound — нижняя граница диапазона.

  • upper_bound — верхняя граница диапазона.

Примеры использования NOT BETWEEN

  1. Поиск значений вне диапазона

    SELECT * FROM employees WHERE salary NOT BETWEEN 40000 AND 60000;

    Этот запрос вернет всех сотрудников, чья зарплата не находится в диапазоне от 40,000 до 60,000 включительно.

  2. Поиск дат вне диапазона

    SELECT * FROM orders WHERE order_date NOT BETWEEN '2024-01-01' AND '2024-12-31';

    Этот запрос вернет все заказы, сделанные до 2024 года или после 2024 года.

  3. Поиск значений вне диапазона с текстовыми данными

    SELECT * FROM products WHERE price NOT BETWEEN 10 AND 50;

    Этот запрос вернет все продукты, чья цена меньше 10 или больше 50.

Советы по использованию

  • Порядок границ: Убедитесь, что нижняя граница диапазона меньше или равна верхней. Если указать верхнюю границу перед нижней, SQL может вернуть ошибку или неожиданное поведение.

  • Исключение границ: Если вам нужно включить или исключить крайние значения, используйте операторы >= и <= вместо BETWEEN и NOT BETWEEN.

  • Сравнение с NULL: Операторы BETWEEN и NOT BETWEEN не работают с NULL. Если границы диапазона могут быть NULL, убедитесь, что обрабатываете эти случаи отдельно.

Заключение

Операторы BETWEEN и NOT BETWEEN являются мощными инструментами для фильтрации данных по диапазонам значений. Они упрощают написание условий поиска, когда необходимо проверить, попадает ли значение в указанный диапазон или находится вне его пределов.

Last updated