В предыдущей статье этой серии мы выучили ключевое слово WHERE (где) позволяющее выбирать из таблицы строки соответствующие условию или нескольким сразу (союз AND) ну или одному из (союз OR). В условиях мы проверяли равенство или неравенство данных и некоторого значения. Если вы уже забыли - вернитесь и перечитайте.
Этот мини урок мы посвятим ещё одному варианту поиска применимому к строковым переменным - поиску по шаблону. Допустим нам нужно найти всех студентов по имени Илья. В этом случае мы не можем воспользоваться строгим равенством и если выполним следующий запрос то не получим ни одной строки.
SELECT name, course, score FROM students WHERE name = 'Илья';
Не верите - попробуйте сами здесь
Дело в том что колонка name нашей таблицы содержит и имя и фамилию студентов и правильно следует сформулировать следующий запрос: ВЫБРАТЬ имя, курс, оценку ИЗ студентов ГДЕ имя начинается со слова Илья. Чтобы перевести такой запрос на английский SQL нужно запомнить еще одно слово - LIKE (похож) и написать условие WHERE name LIKE 'Илья%'; То есть там где имя похоже на некоторый шаблон (в нашем случае 'Илья%').
Что означает знак % в шаблоне? Это обозначение того в колонке после слова Илья могут следовать любые символы в любом (даже нулевом) количестве.
Итак выполним запрос:
SELECT name, course, score FROM students WHERE name LIKE 'Илья%';
Вот результат:
Другой случай если нам нужны строки заканчивающиеся определённым набором букв. Например если мы используем шаблон '%ия' для поиска по полю course и выполним запрос
SELECT name, course, score FROM students WHERE course LIKE '%ия';
То получим список историков и географов. Если не понятно почему это так - напишите в комментариях.
Если же мы используем шаблон '%ов%' для поля name то получим список всех студентов в имени или фамилии которых встречается это буквосочетание в любом месте.
SELECT name, course, score FROM students WHERE name LIKE '%ов%';
Таким образом в этом уроке мы познакомились с мощным инструментом языка SQL - поиском строк по шаблону.
Для закрепления выполните тесты тут и тут. В случае вопросов пишите комментарии и обращайтесь в телеграм