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
Минимальные оклады
| Миноклад |
Начало |
Конец |
| 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 |
2.3.1
| Содержание
| 2.3.3
|