В этой статье мы рассмотрим логический оператор BETWEEN языка T-SQL, Вы узнаете, что это за оператор и как его использовать. А также мы, конечно же, разберём примеры SQL запросов с применением оператора BETWEEN.
Оператор BETWEEN в языке T-SQL
BETWEEN – это логический оператор языка T-SQL, который определяет диапазон для проверки. Другими словами, с помощью BETWEEN мы можем проверить, входит ли значение в определённый диапазон.
Синтаксис
test_expression [ NOT ] BETWEEN begin_expression AND end_expression
Описание аргументов
- test_expression – выражение, которое подлежит проверке на принадлежность к диапазону в пределах от begin_expression до end_expression;
- begin_expression – выражение, характеризующее начала диапазона;
- end_expression – выражение, характеризующее конец диапазона.
Все выражения должны иметь одинаковый тип данных.
В качестве результата оператор BETWEEN возвращает значения (Boolean):
- TRUE – если значение аргумента test_expression больше или равно значению begin_expression, при этом меньше или равно значению end_expression, т.е. test_expression входит в диапазон от begin_expression до end_expression;
- FALSE – если значение аргумента test_expression не входит в диапазон от begin_expression до end_expression.
С помощью ключевого слова NOT мы можем инвертировать результат предиката, иными словами, NOT BETWEEN означает, что мы хотим проверить значение на предмет того, что оно не входит в заданный диапазон.
В данном случае оператор NOT BETWEEN вернет TRUE, если значение аргумента test_expression не входит в диапазон от begin_expression до end_expression.
В случае если в BETWEEN хотя бы одно из выражений будет содержать значение NULL, результат будет не определён.
Заметка! Напоминаю, что необходимо всегда помнить о том, что существуют такие значения как NULL (это не пусто и не 0, это отсутствие значения), которые обрабатывается SQL сервером по-особому, результат SQL запроса с участием NULL-значений может быть неочевиден и непредсказуем.
Заметка! Для комплексного изучения языка SQL и T-SQL рекомендую посмотреть мои видеокурсы по T-SQL, в которых используется последовательная методика обучения специально для начинающих.
Исходные данные для примеров
В качестве сервера у меня выступает Microsoft SQL Server 2016 Express. Для примера давайте представим, что у нас есть таблица TestTable, и в ней содержатся следующие данные (перечень товаров с указанием цены). Строки в таблицу я добавляю с помощью инструкции INSERT INTO.
--Создание таблицы CREATE TABLE TestTable( [ProductId] [INT] IDENTITY(1,1) NOT NULL, [ProductName] [VARCHAR](100) NOT NULL, [Price] [Money] NULL ) GO --Добавление строк в таблицу INSERT INTO TestTable(ProductName, Price) VALUES ('Системный блок', 300), ('Монитор', 200), ('Клавиатура', 100), ('Мышь', 50), ('Принтер', 200), ('Сканер', 150), ('Телефон', 250), ('Планшет', 300) GO --Выборка данных SELECT * FROM TestTable
Пример использования оператора BETWEEN в секции WHERE
Давайте напишем SQL запрос, который выведет нам все товары, цена которых находится в диапазоне от 100 до 200 рублей включительно.
--Условие с применением оператора BETWEEN SELECT ProductID, ProductName, Price FROM TestTable WHERE Price BETWEEN 100 AND 200
Данный запрос мы могли бы написать и без использования оператора BETWEEN, например, следующий SQL запрос абсолютно эквивалентен.
--Условие с применением операторов сравнения SELECT ProductID, ProductName, Price FROM TestTable WHERE Price >= 100 AND Price <= 200
Как видим, результат одинаковый, но в случае с BETWEEN условие выглядит более наглядно и понятно, к тому же выражение для проверки (Price) мы записали всего один раз, в случае с операторами сравнения два.
Пример использования оператора BETWEEN в условной конструкции IF
Оператор BETWEEN можно использовать не только в секции WHERE, но и в других конструкциях языка T-SQL, например, в условной конструкции IF. В следующем примере мы проверим переменную @TestVar на предмет того, входит ли значение этой переменной в диапазон от 1 до 10 и, если входит, выполним нужное нам действия, я для примера просто пошлю запрос SELECT.
DECLARE @TestVar INT = 5 IF @TestVar BETWEEN 1 AND 10 SELECT 'Переменная @TestVar находится в диапазоне от 1 до 10' AS [Результат]
Пример использования оператора NOT BETWEEN
Сейчас давайте напишем запрос с применением ключевого слова NOT, например, нам нужно вывести все товары, цена которых не входит в диапазон от 100 до 200 рублей (эквивалентный пример с использованием операторов сравнения я также прилагаю).
--Условие с применением оператора NOT BETWEEN SELECT ProductID, ProductName, Price FROM TestTable WHERE Price NOT BETWEEN 100 AND 200 --Условие с применением операторов сравнения SELECT ProductID, ProductName, Price FROM TestTable WHERE Price < 100 OR Price > 200
В данном случае нам вывелись все товары, цена которых меньше 100 или больше 200 рублей.
В языке T-SQL кроме оператора BETWEEN существуют и другие логические операторы, например, оператор EXISTS, который в некоторых случаях бывает очень полезен, его мы также рассматривали на этом сайте.
У меня на этом все, пока!
Приглашаю всех желающих пройти мои онлайн-курсы по изучению языка T-SQL – https://self-learning.ru/courses/t-sql
На курсах используется моя авторская последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL. Каждый курс включает огромное количество материалов: видео, текстовый материал, тесты, домашние задания, скрипты, а также сертификат о прохождении.
На курсах Вы можете заниматься в комфортном для себя темпе не выходя из дома в любое удобное для Вас время.