Оператор LIKE
Оператор LIKE используется при условных запросах, когда мы хотим узнать, соответствует ли строка определённому шаблону.
Например, у нас есть таблица Users, в которой есть поле email:
SELECT name, email FROM Users;
Допустим, мы хотим найти всех пользователей, чья почта лежит в домене второго уровня «hotmail». Т.е. нужно отобрать только те записи, что отвечают условию:
- после символа «@» следует «hotmail»
- после «hotmail» следует символ «.» и далее любая последовательность символов
Для таких нетривиальных поисков по строковым полям и нужен оператор LIKE.
Синтаксис
... WHERE поле_таблицы [NOT] LIKE шаблон_строки
Шаблон может включать следующие специальные символы:
Так наш запрос на поиск пользователей в домене «hotmail» может выглядеть следующим образом:
SELECT name, email FROM Users WHERE email LIKE '%@hotmail.%'
Примеры
-
... WHERE поле_таблицы LIKE 'text%'
Сопоставляется любым строкам, начинающимся на «text»
-
... WHERE поле_таблицы LIKE '%text'
Сопоставляется любым строкам, заканчивающимся на «text»
-
... WHERE поле_таблицы LIKE '_ext'
Сопоставляется строкам, имеющим длину 4 символа, при этом 3 последних обязательно должны быть «ext». Например, слова «text» и «next»
-
... WHERE поле_таблицы LIKE 'begin%end'
Сопоставляется строкам, начинающихся на «begin» и заканчивающихся на «end»
В MySQL по умолчанию шаблоны не чувствительны к регистру
ESCAPE-символ
ESCAPE-символ используется для экранирования специальных символов (% и \). В случае если вам нужно найти строки, вы можете использовать ESCAPE-символ.
Например, вы хотите получить идентификаторы задач, прогресс которых равен 3%:
SELECT job_id FROM Jobs WHERE progress LIKE '3!%' ESCAPE '!';
Если бы мы не экранировали трафаретный символ, то в выборку попало бы всё, что начинается на 3.