Работа с таблицами. Внесение, извлечение, поиск и удаление данных
Поиск текстовых данных по шаблону
В данной части мы рассмотрим поиск текстовых данных по шаблону с помощью предложения where и оператора LIKE.
Оператор сравнения на равенство ( = ) помогает выбрать одинаковые строки. Таким образом, чтобы перечислить имена сотрудников, которых зовут Иван, можно воспользоваться следующим оператором SELECT.
select f_name, l_name from employee_data where f_name = "Иван";
Результат запроса приведен на рис. 5.12.
Как быть, если надо вывести данные о сотрудниках, имя которых начинается с буквы В? Язык SQL позволяет выполнить поиск строковых данных по шаблону. Для этого в предложении where используется оператор LIKE следующим образом.
select f_name, l_name from employee_data where f_name LIKE "В%";
Результат запроса приведен на рис. 5.13.
Можно видеть, что здесь в условии вместо знака равенства используется LIKE и знак процента в шаблоне.
Знак % действует как символ-заместитель (аналогично использованию * в системах DOS и Linux). Он заменяет собой любую последовательность символов. Таким образом "В%" обозначает все строки, которые начинаются с буквы В. Аналогично "%В" выбирает строки, которые заканчиваются символом В, а "%В%" строки, которые содержат букву В.
Давайте выведем, например, всех сотрудников, которые имеют в названии должности строку "про".
select f_name, l_name, title from employee_data where title like '%про%';
Результат запроса приведен на рис. 5.14.
Перечислим всех сотрудников, имена которых заканчиваются буквой 'а'. Это очень просто сделать.
mysql> select f_name, l_name from employee_data where f_name like '%a';
Результат запроса приведен на рис. 5.15.
Задания
1. Перечислить всех сотрудников, фамилии которых начинаются с буквы P.
2. Вывести имена всех сотрудников в отделе продаж.
3. Что выведет следующий оператор
SELECT f_name, l_name, salary from employee_data where f_name like '%к%';
4. Перечислить фамилии и должности всех программистов
Возможные решения
1. select l_name, f_name from employee_data where l_name like 'P%';
2. select f_name, l_name from employee_data where title like '%продавец%';
3. Этот оператор выводит имена, фамилии и заплаты всех сотрудников, у которых имя содержит букву 'к'.
SELECT f_name, l_name, salary from employee_data where f_name like '%к%';
4. SELECT l_name, title from employee_data where title like '%программист%';