Оператор BETWEEN в SQL применяют в тех случаях, когда нужно выбрать значения из базы данных в определенном диапазоне аргументов. Чаще всего BETWEEN в SQL используется для извлечения чисел, дат и, чуть реже, текста. С помощью этого оператора можно задать границы вычисления, чтобы не проводить анализ для всей SQL-таблицы.
Оператор BETWEEN в SQL в основном используется в качестве условия рядом с другими операторами, которые задают действие команде. Например, с операторами:
- SELECT — «выбирать»;
- INSERT — «вставлять»;
- UPDATE — «обновить»;
- DELETE — «удалить».
То есть фактически BETWEEN определяет лишь диапазон действий в SQL, а не само действие. Общий синтаксис оператора BETWEEN в SQL такой:
<описание выражения> BETWEEN <нижнее значение диапазона> AND <верхнее значение диапазона>
В «описание выражения» входит:
- оператор, определяющий действие (SELECT, INSERT, UPDATE, DELETE);
- идентификация столбца, где ограничить диапазон исчисления.
Включает ли границы оператор BETWEEN в SQL?
Да, оператор BETWEEN в SQL включает границы диапазона. Под границами подразумевают верхнее и нижнее значения диапазона, которые входят в исчисление. Например, вы хотите извлечь из таблицы идентификаторы автомобилей (autoname_id) с определенным объемом продаж (от 100000 до 200000 штук за год). Объемы продаж располагаются в столбце «volum_sales». В этом случае синтаксис инструкции будет такой:
SELECT autoname_id FROM autonames WHERE volum_sales BETWEEN 100000 AND 200000
Главное, что нужно знать о границах в диапазоне в этом случае, что значения «100000» и «200000» определяют диапазон и они включены в выборку. То есть автомобили с объемом 200000 штук в год попадут в выборку, а 200001 уже нет. То же самое с нижней границей: автомобили с объемом 100000 штук в год попадут в выборку, а 99999 уже нет.
Оператор BETWEEN в SQL: примеры
Как мы уже говорили, что оператор BETWEEN в SQL работает с числами, датами и текстом. В его работе наблюдаются следующие особенности:
Когда взаимодействие оператора происходит с числами, тогда верхняя и нижняя границы входят в выборку.
Нижнее значение диапазона обязательно должно быть меньше чем верхнее значение. Если это условие не соблюдается, тогда диапазон значений не будет выделен, а значит команда с оператором BETWEEN не сработает. Важно помнить об этой особенности, когда в качестве аргументов диапазона оператора BETWEEN используются не конкретные значения, а переменные.
Когда взаимодействие оператора BETWEEN происходит с текстом, тогда значения границ диапазона не входят в выборку.
Рассмотрим примеры использования BETWEEN в SQL.
Чаще всего оператор BETWEEN в качестве аргумента диапазона использует числовое значение. Например, как в примере выше, когда мы выводили идентификаторы проданных автомобилей в зависимости от объема их продаж:
SELECT autoname_id FROM autonames WHERE volum_sales BETWEEN 100000 AND 200000
Практически, оператор BETWEEN можно использовать по отношению к любому столбцу. То есть неважно какие аргументы содержит столбец, потому что практически любым аргументам можно задать диапазон и выделить по нему какую-то информацию. Например, у нас есть некая таблица с различной информацией, где в одном из столбцов указаны даты. Пусть это будут даты регистрации пользователей и нам нужно выяснить какие пользователи были зарегистрированы в определенный диапазон дат. В этом случае мы можем в качестве аргумента диапазона задать определение дат. Вот как в этом случае будет выглядеть SQL-запрос:
SELECT
FROM customers
WHERE customers_date BETWEEN "2022/02/22" AND "2022/05/19";
В данном случае: "customers" — это название таблицы с пользователями, а "customers_date" — это столбец с датами регистрации пользователей. Нужно отметить, что такой синтаксис работает с SQL Server, PostgreSQL, SQLite. Когда дело касается Oracle SQL, тогда тут будет несколько иной синтаксис команды и другая форма написания даты. Тут нужно дополнительно задействовать специальную функцию "TO_DATE". В этом случае синтаксис команды будет такой:
SELECT
FROM customers
WHERE customers_date BETWEEN TO_DATE ('22.02.2022', 'dd.mm.yyyy')
AND TO_DATE ('19.05.2022', 'dd.mm.yyyy');
Но и это еще не все. В СУБД MySQL и MariaDB, чтобы задать диапазон по дате, нужно задействовать функцию CAST. В этом случае синтаксис команды будет выглядеть так:
SELECT
FROM customers
WHERE customers_data BETWEEN CAST ('2022/02/22' AS DATE) AND CAST('2022/05/19' AS DATE)
Оператор BETWEEN в SQL может применяться рядом с другим оператором — "NOT". В этом случае в качестве ответа на запрос нам будут предоставлены все значения, которые не входят в выбранный диапазон. То есть без оператора NOT мы получаем значения из обозначенного диапазона, а с оператором NOT мы получаем значения вне диапазона. Например:
SELECT
FROM customers
WHERE customers_date NOT BETWEEN "2022/02/22" AND "2022/05/19";
Этот запрос нам выдаст список покупателей, которые были зарегистрированы в любое время кроме диапазона 22.02.2022-19.05.2022.
Заключение
Оператор BETWEEN активно применяется в SQL. Главное, что о нем нужно запомнить — он создает диапазон значений, из которого мы можем извлекать какую-то информацию. Если нужно, тогда мы можем извлекать информацию вне диапазона значений, тогда необходимо задействовать дополнительный SQL-оператор — "NOT".
Синтаксис написания запросов с оператором BETWEEN в разных СУДБ отличается. Поэтому перед применением этого оператора почитайте инструкцию его применения в вашей СУБД, чтобы не возникало дополнительных проблем.
SQL