О. А. Ткачев

Основы программирования в СУБД 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 ′;

      Но анализ результатов этого запроса показывает, что