BETWEEN в T-SQL – примеры использования логического оператора

В этой статье мы рассмотрим логический оператор 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

Скриншот 2

Как видим, результат одинаковый, но в случае с 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 [Результат]

Скриншот 3

Пример использования оператора 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

Скриншот 4

В данном случае нам вывелись все товары, цена которых меньше 100 или больше 200 рублей.

В языке T-SQL кроме оператора BETWEEN существуют и другие логические операторы, например, оператор EXISTS, который в некоторых случаях бывает очень полезен, его мы также рассматривали на этом сайте.

У меня на этом все, пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Комментарии: 1
  1. Админ (автор)

    Приглашаю всех желающих пройти мои онлайн-курсы по изучению языка T-SQL – https://self-learning.ru/courses/t-sql
    На курсах используется моя авторская последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL. Каждый курс включает огромное количество материалов: видео, текстовый материал, тесты, домашние задания, скрипты, а также сертификат о прохождении.
    На курсах Вы можете заниматься в комфортном для себя темпе не выходя из дома в любое удобное для Вас время.

Добавить комментарий для Админ Отменить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.