Skip to main content

Выбор данных внутри диапазонов в SQL

T-SQL: Dynamically Create Date Ranges With Recursive Queries (Июнь 2026)

T-SQL: Dynamically Create Date Ranges With Recursive Queries (Июнь 2026)
Anonim

Язык структурированных запросов (SQL) предоставляет пользователям базы данных возможность создавать индивидуальные запросы для извлечения информации из баз данных. В предыдущей статье мы исследовали извлечение информации из базы данных с помощью запросов SQL SELECT. Давайте обсудим это обсуждение и рассмотрим, как вы можете выполнять расширенные запросы для извлечения данных, соответствующих конкретным условиям.Рассмотрим пример, основанный на широко используемой базе данных Northwind, которая часто поставляется с продуктами баз данных в качестве учебника.

Вот выдержка из таблицы продуктов базы данных:

Таблица продуктов
Код товараНаименование товараSupplierIDQuantityPerUnitЦена за единицуUnitsInStock
1Chai110 коробок x 20 мешков18.0039
2Чанг124 - 12 унций бутылок19.0017
3Анисовый сироп112 - 550 мл бутылок10.0013
4Шеф-повар Антона Cajun Seasoning248 - 6 унций банок22.0053
5Шеф-повар Антона Гумбо Микс236 коробок21.350
6Распространение Boysenberry бабушки312 - 8 унций банок25.00120
7Органические сушеные груши дяди Боба312 - 1 фунт pkgs.30.0015

Простые граничные условия

Первые ограничения, которые мы поместим по нашему запросу, связаны с простыми граничными условиями. Мы можем указать их в предложении WHERE запроса SELECT с использованием простых операторов условий, построенных со стандартными операторами, таких как <,>,> = и <=.

Сначала попробуем простой запрос, который позволяет нам извлечь список всех продуктов в базе данных, которые имеют UnitPrice более 20.00:

SELECT ProductName, UnitPrice FROM products WHERE UnitPrice> 20.00

Это дает список из четырех продуктов, как показано ниже:

ProductName UnitPrice ------- -------- Chef Anton's Gumbo Mix 21.35 Chef Anton Cajun Приправа 22.00 Бабушка Boysenberry Spread 25.00 Органические сушеные груши дяди Боба 30.00

Мы также можем использовать предложение WHERE со строковыми значениями. Это в основном приравнивает символы к числам, а A представляет значение 1 и Z, представляющее значение 26. Например, мы могли бы показать все продукты с именами, начинающимися с U, V, W, X, Y или Z, со следующим запросом:

SELECT ProductName FROM products WHERE ProductName> = 'T'

Что дает результат:

ProductName ------- Органические сушеные груши дяди Боба

Выражение диапазонов с использованием границ

Предложение WHERE также позволяет реализовать условие диапазона для значения с использованием нескольких условий. Например, если мы хотим взять наш запрос выше и ограничить результаты продуктами с ценами между 15.00 и 20.00, мы можем использовать следующий запрос:

SELECT ProductName, UnitPrice FROM products WHERE UnitPrice> 15.00 И UnitPrice <20.00

Это приводит к результату, показанному ниже:

ProductName UnitPrice ------- -------- Chai 18.00 Chang 19.00

Выражение диапазонов с МЕЖДУ

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

SELECT ProductName, UnitPrice FROM products WHERE UnitPrice МЕЖДУ 15.00 И 20.00

Как и в случае с другими условиями, BETWEEN работает со строковыми значениями. Если бы мы хотели создать список всех стран, начинающихся с V, W или X, мы могли бы использовать запрос:

SELECT ProductName FROM products WHERE ProductName МЕЖДУ «A» и «D»

Что дает результат:

ProductName ------- Анисский сироп Чай Чанг Шеф-повар Антонский гамбо-повар шеф-повара Антон Каджун Приправа

Предложение WHERE является мощной частью языка SQL, которая позволяет ограничить результаты значениями, попадающими в определенные диапазоны. Он очень часто используется, чтобы помочь выразить бизнес-логику и должен быть частью инструментария каждого профессионала базы данных.

Часто полезно включать общие клаузеры в хранимую процедуру, чтобы сделать ее доступной для тех, кто не знает SQL.