Архив документации OpenNet.ru / Раздел "Базы данных, SQL" / Индекс

2.3.2. Использование BETWEEN

С помощью BETWEEN ... AND ... (находится в интервале от ... до ...) можно отобрать строки, в которых значение какого-либо столбца находятся в заданном диапазоне.

Например, выдать перечень продуктов, в которых значение содержания белка находится в диапазоне от 10 до 50:
Результат:
SELECT	Продукт, Белки
FROM	Продукты
WHERE 	Белки BETWEEN 10 AND 50;
Продукт Белки
Майонез31.
Сметана26.
Молоко28.
Морковь13.
Лук17.

Можно задать и NOT BETWEEN (не принадлежит диапазону между), например:

Результат:
SELECT	Продукт, Белки, Жиры
FROM	Продукты	
WHERE	Белки NOT BETWEEN 10 AND 50	
AND	Жиры > 100;
Продукт Белки Жиры
Говядина189.124.
Масло 60.825.
Яйца127.115.

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

Для примера воспользуемся таблицей "минимальных окладов" (табл. 2.1), величина которых непосредственно связана со студенческой стипендией. В этой таблице для текущего значения минимального оклада установлена запредельная дата окончания 9 сентября 9999 года.

Таблица 2.1
Минимальные оклады

МинокладНачалоКонец
225001-01-199331-03-1993
427501-04-199330-06-1993
774001-07-199330-11-1993
1462001-12-199330-06-1994
2050001-07-199409-09-9999

Если, например, потребовалось узнать, какие изменения минимальных окладов производились в 1993/94 учебном году, то можно выдать запрос

SELECT	Начало, Миноклад
FROM	Миноклады
WHERE	Начало BETWEEN '1-9-1993' AND '31-8-1994'
и получить результат:
НачалоМиноклад
01-12-199314620
01-07-199420500

Отметим, что при формировании запросов значения дат следует заключать в апострофы, чтобы СУБД не путала их с выражениями и не пыталась вычитать из 31 значение 8, а затем 1994.

Для выявления всех значений минимальных окладов, которые существовали в 1993/94 учебном году, можно сформировать запрос

SELECT	*
FROM	Миноклады
WHERE	Начало	BETWEEN '1-9-1993' AND '31-8-1994'
OR	Конец 	BETWEEN '1-9-1993' AND '31-8-1994'
МинокладНачалоКонец
774001/07/199330/11/1993
1462001/12/199330/06/1994
2050001/07/199409/09/9999

Наконец, для получения минимального оклада на 15-5-1994:

Результат:
SELECT	Миноклад
FROM	Миноклады
WHERE	'15-05-1994' BETWEEN Начало AND Конец
Миноклад
14620

2.3.1 | Содержание | 2.3.3


Архив документации на OpenNet.ru