Полнотекстовый поиск MySQL / MariaDB - Оператор LIKE
Коллеги всем привет.
В сегодняшней статье мы поговорим о том как использовать в своих запросах SQL оператор LIKE в MySQL и MariaDB.
В основном оператор LIKE используется в случаи, если у вас на сайте организован поиск. Еще очень важным моментом, что оператор LIKE применяется только к полям типа CHAR и VARCHAR, если вы будете применять оператор LIKE к примеру типа INT то результаты будут не предсказуемые.
Оператор LIKE используется в предложении вместе с оператором WHERE для поиска заданной подстроки в столбце. Для более качественного поиска подстроки используются так называемые шаблоны. Шаблоны это специальные символы, которые могут обозначать всё что угодно. Существует всего три варианта шаблонов. Первый шаблон это знак процента (%), второй знак нижнее подчёркивание (_) и третий это квадратные скобки ([ ]).
Обозначения шаблонов:
- ( _ ) - Означает один любой символ.
- ( % ) - Сколько угодно символов произвольной длины.
- ( [ ] ) - Последовательность символов. Если мы к примеру укажем символы ДК, то поиск будет выполняться с учётом того, что информация будет начинаться с Д или К.
Синтаксис оператора LIKE:
SELECT column1, column2, ... FROM table_name WHERE columnN LIKE [pattern]string[pattern];
- SELECT column1, column2 - Имя полей из которых мы хотим взят значения.
- FROM table_name - Имя таблицы с которой мы хотим взять значения.
- WHERE columnN - Имя поля по которому будет осуществляться поиск.
- LIKE [pattern]string[pattern] - Подстрока которую мы будем сравнивать со строками поля columnN.
[pattern] - Является не обязательным к применению.
Проверять как работает оператор LIKE мы будем на таблице которую я создал под названием it_inzhener_like и эта таблица будет иметь всего два поля, поле id и поле title.
И в эту таблицу я добавил пару строк на которых мы будем проверять как работает оператор LIKE.
Примеры использования оператора LIKE:
В первом примере мы будем использовать шаблон для поиска знак процента (%), и искать статьи будем те которые начинаются на букву M, за которым следует любое количество символов.
sql> SELECT title FROM inzhener.it_inzhener_like WHERE title LIKE 'M%';
Если бы мы не использовали шаблон знак процента (%), то в результате мы получили бы ноль записей.
Теперь давайте найдем статьи, которые заканчиваются на буквы er, и использовать мы будем тот же шаблон знак процента (%).
sql> SELECT title FROM inzhener.it_inzhener_like WHERE title LIKE '%er';
Теперь давайте проверим тот вариант который вы будете использовать в своем сайте. Мы будем искать статьи, которые содержат подстроку MySQL, за которым и перед этой подстрокой следует любое количество символов. Использовать мы будем тот же шаблон знак процента (%), но этот шаблон мы будем вставлять в начало и конец подстроки.
sql> SELECT title FROM inzhener.it_inzhener_like WHERE title LIKE '%mysql%';
Как видим в результате мы получили название статье которые содержат слово MySQL в начале строки и в средине.
Для организации поиска на своем сайте этот вариант наиболее подходит чем те что я показывал выше.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.