SQL

Опeратор Between в Oracle SQL: включает границы или нет. Примеры использования

Оператор 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 работает с числами, датами и текстом. В его работе наблюдаются следующие особенности:

  1. Когда взаимодействие оператора происходит с числами, тогда верхняя и нижняя границы входят в выборку.

  2. Нижнее значение диапазона обязательно должно быть меньше чем верхнее значение. Если это условие не соблюдается, тогда диапазон значений не будет выделен, а значит команда с оператором BETWEEN не сработает.  Важно помнить об этой особенности, когда в качестве аргументов диапазона оператора BETWEEN используются не конкретные значения, а переменные.

  3. Когда взаимодействие оператора  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

Как восстановить базу данных MySQL из дампа быстро и просто

MySQL: добавить столбец в таблицу, как переименовать и изменить поле
SQL

MySQL: добавить столбец в таблицу, как переименовать и изменить поле

Что такое MariaDB, где используется эта система управления
SQL

Что такое MariaDB, где используется эта система управления

PostgreSQL: использование и приведение (преобразование) типов
SQL

PostgreSQL: использование и приведение (преобразование) типов