Точный поиск слова в MySQL: решение на SQL, без PHP

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для поиска целого слова в MySQL используйте REGEXP со специальными обозначениями границ слов:

SQL
Скопировать код
SELECT * FROM your_table WHERE your_column REGEXP '\\bword\\b';

Например, если нужно найти 'apple', исключив при этом слово 'applesauce':

SQL
Скопировать код
SELECT * FROM your_table WHERE your_column REGEXP '\\bapple\\b';

Символ \\b обозначает границу слова и обеспечивает поиск точного совпадения.

Понимание границ слов

Границы слов позволяют извлекать информацию из текста, обеспечивая точное совпадение нужного вам слова. Вот некоторые области применения:

  • Поиск имен пользователей в базе данных.
  • Выделение поисковых запросов в текстовых данных, например, 'Apple' вместо 'Apple pie' или 'Green apple'.
  • Поиск ключевых слов в системах управления контентом.

Синтаксис обозначения границ слов зависит от версии MySQL:

  • До версии 8.0.4 используйте [[:<:]] и [[:>:]] для обозначения начала и конца слова.
SQL
Скопировать код
SELECT * FROM your_table WHERE your_column REGEXP '[[:<:]]apple[[:>:]]';
  • Начиная с версии MySQL 8.0.4 используйте \b, экранируя его как \\b.
SQL
Скопировать код
SELECT * FROM your_table WHERE your_column REGEXP '\\bapple\\b';

Регулярные выражения с использованием REGEXP повышают эффективность поиска, уменьшая количество передаваемых данных между базой и приложением.

Регулярные выражения в MySQL и обновления: что важно помнить

Регулярные выражения в MySQL похожи на магию, и важно учесть следующее:

  • По умолчанию работа с регулярными выражениями чувствительна к регистру. Если это нежелательно, вы можете использовать функцию REGEXP_LIKE() или комбинировать её с LOWER().
SQL
Скопировать код
SELECT * FROM your_table WHERE LOWER(your_column) REGEXP LOWER('\\bapple\\b');
  • Версии MySQL могут вносить изменения в работу с регулярными выражениями, поэтому всегда ознакомляйтесь с документацией и примечаниями к каждому новому релизу.

Визуализация

Вообразите библиотеку с книгами, где каждая запись соответствует книге в базе данных:

Markdown
Скопировать код
📚 Полки библиотеки с КНИГАМИ (🅱️)

Поиск "целого слова" в SQL аналогичен запросу на конкретную книгу "Полное Слово", исключая "Целое Новое Слово" или "Игры со Словами":

Markdown
Скопировать код
🔍🅱️: "Полное Слово", но не "Целое Новое Слово" или "Игры со Словами"

Использование границ слов в SQL гарантирует, что найденное слово точно соответствует вашему запросу.

Продвинутые случаи использования MySQL REGEXP

Обработка специальных символов

Не забывайте экранировать специальные символы, входящие в синтаксис RegEx:

SQL
Скопировать код
SELECT * FROM your_table WHERE your_column REGEXP '\\bco\\-op\\b';

Работа со сложными словами

Если работаете со словами, содержащими дефисы и другие символы:

SQL
Скопировать код
SELECT * FROM your_table WHERE your_column REGEXP '\\be\\-mail\\b';

Вариации слов

Чтобы учесть разные формы слова, например 'apple' и 'apples':

SQL
Скопировать код
SELECT * FROM your_table WHERE your_column REGEXP '\\b(apple|apples)\\b';

Полезные материалы

  1. Официальная документация MySQL 5.7 по оператору REGEXP — здесь вы найдете общие сведения о продвинутом поиске шаблонов.
  2. Руководство по MySQL 8.0: функции полнотекстового поиска — обзор возможностей полнотекстового поиска в MySQL 8.0.
  3. REGEXP в базе знаний MariaDB — это глубокое погружение в работу с операторами REGEXP и RLIKE.
  4. Полнотекстовый поиск в MySQL в сравнении с Regex — статья поможет определить, когда лучше использовать полнотекстовый поиск, а когда regex.
  5. Реализация полнотекстового поиска в MySQL — пошаговое руководство по внедрению полнотекстового поиска.