Основы программирования в СУБД Oracle. SQL+PL/SQL.. О. А. Ткачев
first_name LIKE ′ L% ′;
Пример 2.13. Вывод имен сотрудников, вторым символом которых является буква а
SELECT DISTINCT first_name
FROM Employees
WHERE first_name LIKE ′ _a% ′;
Пример 2.14. Вывод имен сотрудников, которые состоят из четырех символов, начинаются на букву J и заканчиваются буквой n
SELECT DISTINCT first_name
FROM Employees
WHERE first_name LIKE ′ J__n ′;
Для поиска в строке символов _ и % при построении шаблона используется опция ESCAPE /. Символ, который в шаблоне будет располагаться после /, будет рассматриваться как символ поиска. Вместо символа / можно использовать и другие символы, например!.
Пример 2.15. Вывести имя и адрес клиентов, столбец address которых содержит символ /
SELECT c_name, address
FROM Customers
WHERE address LIKE ′ %//% ′ ESCAPE ′ / ′;
Оператор BETWEEN
Оператор BETWEEN используется для того, чтобы результат запроса содержал только те строки, в которых значение проверяемого столбца находится в заданном диапазоне.
Синтаксис:
{имя столбца} BETWEEN V_MIN AND V_MAX
V_MIN – нижняя граница диапазона;
V_MAX – верхняя граница диапазона
Оператор BETWEEN осуществляет поиск среди всех значений диапазона, включая границы. Оператор BETWEEN эквивалентен двум операциям сравнения, объединенным логическим оператором AND.
({имя столбца}> = 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 ′;
Но анализ результатов этого запроса показывает, что