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




В процессе выполнения этого оператора осуществляется неявное преобразование строки ′ 20.08.1997 ′ в формат Date. Для того чтобы это преобразование произошло без ошибок, содержимое строки, содержащую дату, должно быть совместимо с настройками Oracle SQL Developer (рисунок 1.21).

Для указаний условий выбора могут быть использованы операторы сравнения: =,>, <и логические операторы: NOT, AND, OR. Логические операторы используются для формирования сложных условий выбора и имеют разный приоритет. Сначала выполняются все операторы NOT, потом операторы AND; операторы OR выполняются в последнюю очередь. Для исключения возможных ошибок при формировании сложных запросов следует использовать скобки. Выражения внутри скобок выполняются первыми, слева направо.


Рассмотрим примеры запросов, использующих логические операторы при формировании условий выбора.


Пример 2.8. Вывод данных о сотрудниках, которые работают в отделе 50 и занимают должность ST_MAN


SELECT employee_id, first_name, last_name, department_id

FROM Employees

WHERE (department_id = 50) AND (job_id= ′ ST_MAN ′);


Пример 2.9. Вывод данных о договорах, заключенных сотрудником 150 с клиентом 49, совершенных в определенную дату (27.09.2017)


SELECT * FROM Orders

WHERE (salesman_id = 150) AND (customer_id=49)

AND (order_date = ′ 27.09.2017 ′);


Использование скобок при формировании условий выбора может существенным образом изменять логику выполнения запроса.


Пример 2.10. Вывод данных о договорах сотрудника 155, заключенных 15.03.2018 или 02.11.2019


SELECT * FROM Orders

WHERE (salesman_id = 155) AND (order_date = ′ 15.03.2018 ′

OR order_date = ′ 02.11.2019 ′);



Если в предложении WHERE скобки поставить так, как это показано в примере 2.11, то запрос будет иметь совсем другой смысл.


Пример 2.11. Вывод данных о договорах сотрудника 155, заключенных 15.03.2018, или обо всех договорах, заключенных 02.11.219


SELECT * FROM Orders

WHERE (salesman_id = 155) AND (order_date = ′ 15.03.2018 ′)

OR (order_date = ′ 02.11.2019 ′);



Специальные операторы


Для формирования условий выбора можно использовать специальные операторы, представленные в таблице 2.1.


Таблица 2.1. Специальные операторы



Рассмотрим примеры запросов, использующих специальные операторы.


Оператор LIKE


Оператор LIKE используется для работы со строками. Он проверяет, совпадает ли часть строки с заданным шаблоном. Для создания шаблонов в операторе LIKE используются следующие символы:

– символ подчеркивания _ обозначает один символ;

– символ процента % обозначает несколько символов.

Синтаксис:


{имя столбца} LIKE ′ шаблон ′


Пример 2.12. Вывод данных о сотрудниках, имена которых начинаются на букву L


SELECT employee_id, first_name, last_name, department_id

FROM Employees

WHERE 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 которых содержит символ /