Поиск текстовых данных по шаблону
В данной части мы рассмотрим поиск текстовых данных по шаблону с помощью предложения where и оператора LIKE. Оператор сравнения на равенство ( = ) помогает выбрать одинаковые строки. Таким образом, чтобы перечислить имена сотрудников, которых зовут Иван, можно воспользоваться следующим оператором SELECT. select f_name, l_name from employee_data where f_name = "Иван"; Результат запроса приведен на рис. 5.12.
Рис. 5.12. Результат поиска сотрудников, которых зовут Иван Как быть, если надо вывести данные о сотрудниках, имя которых начинается с буквы В? Язык SQL позволяет выполнить поиск строковых данных по шаблону. Для этого в предложении where используется оператор LIKE следующим образом. select f_name, l_name from employee_data where f_name LIKE "В%"; Результат запроса приведен на рис. 5.13.
Рис. 5.13. Результат поиска сотрудников, имя которых начинается с буквы В Можно видеть, что здесь в условии вместо знака равенства используется LIKE и знак процента в шаблоне. Знак % действует как символ-заместитель (аналогично использованию * в системах DOS и Linux). Он заменяет собой любую последовательность символов. Таким образом "В%" обозначает все строки, которые начинаются с буквы В. Аналогично "%В" выбирает строки, которые заканчиваются символом В, а "%В%" строки, которые содержат букву В. Давайте выведем, например, всех сотрудников, которые имеют в названии должности строку "про". select f_name, l_name, title from employee_data where title like '%про%'; Результат запроса приведен на рис. 5.14.
Рис. 5.14. Результат поиска сотрудников, в названии должности которых содержится строка "про" Перечислим всех сотрудников, имена которых заканчиваются буквой 'а'. Это очень просто сделать. mysql> select f_name, l_name from employee_data where f_name like '%a'; Результат запроса приведен на рис. 5.15.
Рис. 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 '%программист%'; Предложение HAVING Чтобы вывести среднюю зарплату сотрудников в различных подразделениях (должностях), используется предложение GROUP BY, например: select title, AVG(salary) from employee_data GROUP BY title; Результат запроса приведен на рис. 5.16.
Рис. 5.16. Вывод средней зарплаты сотрудников по подразделениям Предположим теперь, что требуется вывести только те подразделения, где средняя зарплата более 100000. Это можно сделать с помощью предложения HAVING. select title, AVG(salary) from employee_data GROUP BY title HAVING AVG(salary) > 100000; Результат запроса приведен на рис. 5.17.
Рис. 5.17. Вывод средней зарплаты определённого диапазона по подразделениям Задание Вывести подразделения и средний возраст, где средний возраст больше 30. Возможное решение mysql> select title, AVG(age) -> from employee_data -> GROUP BY title -> HAVING AVG(age) > 30; Результат запроса приведен на рис. 5.18.
Рис. 5.18. Вывод подразделения и среднего возраста, где средний возраст больше 30 лет
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (217)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |