Точный поиск слова в MySQL: решение на SQL, без PHP
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для поиска целого слова в MySQL используйте REGEXP
со специальными обозначениями границ слов:
SELECT * FROM your_table WHERE your_column REGEXP '\\bword\\b';
Например, если нужно найти 'apple', исключив при этом слово 'applesauce':
SELECT * FROM your_table WHERE your_column REGEXP '\\bapple\\b';
Символ \\b
обозначает границу слова и обеспечивает поиск точного совпадения.
Понимание границ слов
Границы слов позволяют извлекать информацию из текста, обеспечивая точное совпадение нужного вам слова. Вот некоторые области применения:
- Поиск имен пользователей в базе данных.
- Выделение поисковых запросов в текстовых данных, например, 'Apple' вместо 'Apple pie' или 'Green apple'.
- Поиск ключевых слов в системах управления контентом.
Синтаксис обозначения границ слов зависит от версии MySQL:
- До версии 8.0.4 используйте
[[:<:]]
и[[:>:]]
для обозначения начала и конца слова.
SELECT * FROM your_table WHERE your_column REGEXP '[[:<:]]apple[[:>:]]';
- Начиная с версии MySQL 8.0.4 используйте
\b
, экранируя его как\\b
.
SELECT * FROM your_table WHERE your_column REGEXP '\\bapple\\b';
Регулярные выражения с использованием REGEXP
повышают эффективность поиска, уменьшая количество передаваемых данных между базой и приложением.
Регулярные выражения в MySQL и обновления: что важно помнить
Регулярные выражения в MySQL похожи на магию, и важно учесть следующее:
- По умолчанию работа с регулярными выражениями чувствительна к регистру. Если это нежелательно, вы можете использовать функцию
REGEXP_LIKE()
или комбинировать её сLOWER()
.
SELECT * FROM your_table WHERE LOWER(your_column) REGEXP LOWER('\\bapple\\b');
- Версии MySQL могут вносить изменения в работу с регулярными выражениями, поэтому всегда ознакомляйтесь с документацией и примечаниями к каждому новому релизу.
Визуализация
Вообразите библиотеку с книгами, где каждая запись соответствует книге в базе данных:
📚 Полки библиотеки с КНИГАМИ (🅱️)
Поиск "целого слова" в SQL аналогичен запросу на конкретную книгу "Полное Слово", исключая "Целое Новое Слово" или "Игры со Словами":
🔍🅱️: "Полное Слово", но не "Целое Новое Слово" или "Игры со Словами"
Использование границ слов в SQL гарантирует, что найденное слово точно соответствует вашему запросу.
Продвинутые случаи использования MySQL REGEXP
Обработка специальных символов
Не забывайте экранировать специальные символы, входящие в синтаксис RegEx:
SELECT * FROM your_table WHERE your_column REGEXP '\\bco\\-op\\b';
Работа со сложными словами
Если работаете со словами, содержащими дефисы и другие символы:
SELECT * FROM your_table WHERE your_column REGEXP '\\be\\-mail\\b';
Вариации слов
Чтобы учесть разные формы слова, например 'apple' и 'apples':
SELECT * FROM your_table WHERE your_column REGEXP '\\b(apple|apples)\\b';
Полезные материалы
- Официальная документация MySQL 5.7 по оператору REGEXP — здесь вы найдете общие сведения о продвинутом поиске шаблонов.
- Руководство по MySQL 8.0: функции полнотекстового поиска — обзор возможностей полнотекстового поиска в MySQL 8.0.
- REGEXP в базе знаний MariaDB — это глубокое погружение в работу с операторами REGEXP и RLIKE.
- Полнотекстовый поиск в MySQL в сравнении с Regex — статья поможет определить, когда лучше использовать полнотекстовый поиск, а когда regex.
- Реализация полнотекстового поиска в MySQL — пошаговое руководство по внедрению полнотекстового поиска.