Основы программирования в СУБД Oracle. SQL+PL/SQL. - страница 19

Шрифт
Интервал



({имя столбца}> = V_MIN) AND ({имя столбца} <= V_MAX)


Пример 2.16. Вывести данные о сотрудниках, зарплата которых находится в определенном диапазоне


SELECT employee_id, first_name, last_name, department_id

FROM Employees

WHERE salary BETWEEN 6000 AND 8000;


Для определения границ диапазона можно использовать вещественные числа, даты и строки.


Пример 2.17. Получить данные о сотрудниках, у которых значение комиссионных находится в определенном диапазоне


SELECT employee_id, first_name, last_name, department_id,

salary, commission_pct

FROM Employees

WHERE commission_pct BETWEEN 0.15 AND 0.2;


Пример 2.18. Получить данные о договорах, дата заключения которых лежит в определенном диапазоне


SELECT * FROM Orders

WHERE order_date BETWEEN ′ 01.09.2019 ′

AND ′ 30.09.2019 ′;

Оператор BETWEEN можно использовать совместно с логическим оператором NOT.


Пример 2.19. Получить данные о договорах, дата заключения которых не лежит в определенном диапазоне


SELECT * FROM Orders

WHERE order_date NOT BETWEEN ′ 01.09.2019 ′ AND ′ 30.09.2019 ′;


При использовании в качестве границ диапазона строчных значений нужно учитывать особенности сортировки строк. Например, нужно получить данные о сотрудниках, имена которых начинаются с букв в диапазоне с A по B.

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


Пример 2.20. Получить данные о сотрудниках, имена которых начинаются с букв в диапазоне с A по B (содержит ошибку)


SELECT employee_id, first_name, last_name, department_id

FROM Employees

WHERE first_name BETWEEN ′ A ′ AND ′ B ′;



Но анализ результатов этого запроса показывает, что данные о сотрудниках, чьи имена начинаются на букву B, в результат выполнения запроса не попали, хотя такие сотрудники есть, например Bruce.

Это происходит потому, что значение строки B меньше значения строки Bruce, поэтому данные о сотрудниках, чьи имена начинаются на букву B, в результат выполнения запроса не попали. Эту проблему можно решить, указывая в качестве верхнего диапазона следующую букву.


Пример 2.21. Получить данные о сотрудниках, имена которых начинаются с букв в диапазоне с A по B


SELECT employee_id, first_name, last_name, department_id

FROM Employees

WHERE first_name BETWEEN ′ A ′ AND ′ C ′;



Оператор IN


Оператор IN используется для того, чтобы результат запроса содержал только те строки, в которых значение проверяемого столбца совпадает с одним из значений, указанных в списке.