Оператор BETWEEN: фильтрация по диапазону значений

🔍 Что делает оператор BETWEEN?

Когда нужно выбрать данные в определённом диапазоне, оператор BETWEEN становится вашим лучшим другом! Это как волшебная указка, которая говорит SQL:
«Дай мне все записи, где значение попадает между точкой A и точкой B».

👉 Как это работает технически?
BETWEEN проверяет, входит ли значение в диапазон включительно (границы A и B тоже учитываются). Под капотом он преобразуется в два условия с >= и <=.

-- Эквивалентные записи:
WHERE price BETWEEN 100 AND 500
WHERE price >= 100 AND price <= 500

📊 Где применяется?

1. Числовые диапазоны

Идеален для фильтрации: - Цен товаров - Возраста пользователей - Количества товаров на складе

Пример:

SELECT product_name, price 
FROM products
WHERE price BETWEEN 50 AND 200;  -- Товары ценой от 50 до 200 (включая границы)

2. Даты и время

Чаще всего используется для выборки за период:

SELECT order_id, order_date
FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';  -- Все заказы за 2023 год

3. Текстовые диапазоны

Работает и с алфавитным порядком!

SELECT employee_name
FROM employees
WHERE last_name BETWEEN 'A' AND 'D';  -- Фамилии на A, B, C, D (включая 'D')

🚨 Опасные ловушки

❗Границы включаются!

-- Выберет записи с rating = 3, 4, 5
WHERE rating BETWEEN 3 AND 5

❗Порядок границ важен

-- Не сработает (вернёт 0 строк)!
WHERE price BETWEEN 500 AND 100  -- Левая граница должна быть меньше правой

❗Типы данных должны совпадать

-- Ошибка, если 'price' — текст:
WHERE price BETWEEN '100' AND '500'  -- Для чисел кавычки не нужны!

💡 Продвинутые фишки

NOT BETWEEN

Выбор значений вне диапазона:

SELECT product_name
FROM products
WHERE price NOT BETWEEN 10 AND 20;  -- Товары дешевле 10 или дороже 20

Комбинация с другими операторами

SELECT *
FROM books
WHERE (rating BETWEEN 4 AND 5)
  AND publication_year > 2020;  -- Только свежие книги с высоким рейтингом

Динамические диапазоны

Используйте переменные или подзапросы:

-- Выбор товаров в ценовом диапазоне определённой категории
SELECT *
FROM products
WHERE price BETWEEN 
  (SELECT MIN(price) FROM products WHERE category = 'Electronics') 
  AND 
  (SELECT MAX(price) FROM products WHERE category = 'Electronics');

🏆 Практика: решаем реальные задачи

Задача 1: Найдите всех клиентов, которые сделали заказ с 1 по 7 января 2024 года.

SELECT DISTINCT customer_id
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-01-07';

Задача 2: Получите список товаров с остатком на складе от 5 до 15 штук, кроме категории «Сезонные».

SELECT product_name, stock_quantity
FROM products
WHERE stock_quantity BETWEEN 5 AND 15
  AND category != 'Сезонные';

⚡ Как запомнить?

  • BETWEEN — это «от и до включительно»
  • Всегда проверяйте порядок границ: между меньшим AND большим
  • Для дат используйте стандартный формат YYYY-MM-DD

👉 Простое правило: Если можете сказать «от A до B» в жизни — смело применяйте BETWEEN в SQL!


🔥 Вызов для самых смелых

Попробуйте написать запрос, который найдёт сотрудников:
- С зарплатой от $3000 до $5000
- ИЛИ с датой приёма между 2020 и 2023 годом

Ответ:

SELECT employee_name
FROM employees
WHERE salary BETWEEN 3000 AND 5000
   OR hire_date BETWEEN '2020-01-01' AND '2023-12-31';
Скрыть рекламу навсегда

📘 VK Видео — обучение без ограничений

Все уроки доступны без VPN, без блокировок и зависаний.

Можно смотреть с телефона, планшета или компьютера — в любое время.

▶️ Смотреть на VK Видео