Как известно базы данных MySQL способны хранить данные, которые нам представляются в виде таблиц. Иногда необходимо произвести поиск некоторого значения в записях по конкретному полю таблицы. MySQL имеет ряд возможностей поиска нужных значений среди записей. Рассмотрим один из распространённых операторов поиска — LIKE, с помощью которого можно производить поиск по базе некоторого значения. Стоит обратить внимание на то, что оператор исправно производит поиск только по полям, которые имеют тип VARCHAR либо CHAR. Это так же накладывает некоторые ограничения. Тем не менее, при должном подходе можно получить хороший результат.
Давайте рассмотрим пример. Предположим у нас есть таблица под названием posts с записями. Нужное нам поле имеет имя name, которое имеет тип VARCHAR соответственно. Необходимо произвести поиск по этому полю, и попробовать найти запись, которая начинается с ключевого слова. В качестве ключевого слова возьмем слово woofer.
Запрос будет таков:
SELECT `id` FROM `posts` WHERE `name` LIKE 'woofer%';
В результате выполнения запроса будет выполнен поиск записи по полю name, начинающиеся с ключевого слова woofer, и в случае успеха будут выбраны id записей.
Разберем подробнее. Первый оператор SELECT – оператор означает, что производится выборка, поля id.
FROM `posts` — выборка будет из таблицы posts. Далее идет оператор WHERE, после которого прописано условие, согласно которому и будет производиться выборка из таблицы базы данных. В условии сказано, что по полю name необходимо произвести поиск (оператор LIKE) значения woofer. Знак % после ключевого слова означает, что за ключевым словом woofer может последовать не определенное количество символов. Согласно условию нашего запроса, будет производиться поиск всех вхождений строк, начинающихся с ключевого слова woofer, после которого могут последовать другие комбинации символов.
Так же есть возможность задать конкретное количество символов, который могут идти после ключевого слова. Для этого вместо знака % необходимо использовать знак «_». К примеру, нам необходимо выбрать из таблицы записи, которые начинается с символов woo, и в целом слово должно состоять из 6-ти символов:
SELECT `id` FROM `posts` WHERE `name` LIKE 'woo___';
Данный запрос произведет выборку записей, у которых в поле name есть слово, которое начинается с ключевых символов woo, и в целом состоит из 6-ти символов. Наличие одного знака «_» указывает на один символ.
Рассмотрим вариант поиска с дополнительным условием, на практике может встречаться довольно часто. Сначала постановка задачи. Предположим, есть таблица с пользователями t_users, в данной таблице есть поля нужные для запроса: firstname, lastname, active. Стоит задача произвести поиск пользователя по двум полям firstname и lastname, при условии, что значение поля active равно 1.
SELECT * FROM t_users WHERE (firstname LIKE '%this%' OR lastname LIKE '%that%') AND active=1;
В месте, где находятся this и that, следует подставить свои значения.