С помощью 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
Минимальные оклады
Миноклад Начало Конец
2250 01-01-1993 31-03-1993
4275 01-04-1993 30-06-1993
7740 01-07-1993 30-11-1993
14620 01-12-1993 30-06-1994
20500 01-07-1994 09-09-9999
Если, например, потребовалось узнать, какие изменения минимальных окладов производились в 1993/94 учебном году, то можно выдать запрос
SELECT Начало, Миноклад
FROM Миноклады
WHERE Начало BETWEEN '1-9-1993' AND '31-8-1994'
и получить результат:
Начало Миноклад
01-12-1993 14620
01-07-1994 20500
Отметим, что при формировании запросов значения дат следует заключать в апострофы, чтобы СУБД не путала их с выражениями и не пыталась вычитать из 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'
Миноклад Начало Конец
7740 01/07/1993 30/11/1993
14620 01/12/1993 30/06/1994
20500 01/07/1994 09/09/9999
Наконец, для получения минимального оклада на 15-5-1994:
Результат:
SELECT Миноклад
FROM Миноклады
WHERE '15-05-1994' BETWEEN Начало AND Конец
Миноклад
14620
Например, выдать перечень продуктов, в которых значение содержания белка находится в диапазоне от 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
Минимальные оклады
Миноклад Начало Конец
2250 01-01-1993 31-03-1993
4275 01-04-1993 30-06-1993
7740 01-07-1993 30-11-1993
14620 01-12-1993 30-06-1994
20500 01-07-1994 09-09-9999
Если, например, потребовалось узнать, какие изменения минимальных окладов производились в 1993/94 учебном году, то можно выдать запрос
SELECT Начало, Миноклад
FROM Миноклады
WHERE Начало BETWEEN '1-9-1993' AND '31-8-1994'
и получить результат:
Начало Миноклад
01-12-1993 14620
01-07-1994 20500
Отметим, что при формировании запросов значения дат следует заключать в апострофы, чтобы СУБД не путала их с выражениями и не пыталась вычитать из 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'
Миноклад Начало Конец
7740 01/07/1993 30/11/1993
14620 01/12/1993 30/06/1994
20500 01/07/1994 09/09/9999
Наконец, для получения минимального оклада на 15-5-1994:
Результат:
SELECT Миноклад
FROM Миноклады
WHERE '15-05-1994' BETWEEN Начало AND Конец
Миноклад
14620