Mysql Запрос на расширенный поиск - PullRequest
0 голосов
/ 28 мая 2020

У нас есть таблица «студенты» и в этой таблице есть текстовый столбец «описание». Этот столбец содержит профиль студента. Теперь предположим, что у нас есть 2 слова: a) Lorem b) ipsum.

Мы хотим получить всех учеников, у которых эти слова будут соответствовать следующим критериям:
a. Описание должно содержать слово: lorem
b. Сразу после слова «lorem», в следующих 20 символах, если существует другое слово «ipsum», то mysql вернет мне этого ученика.

У меня средний уровень знаний Mysql, но я не могу сделать запрос, который бы соответствовал указанным выше критериям. Может ли кто-нибудь поделиться запросом mysql, с помощью которого я могу получать записи на основе вышеуказанных условий.

Заранее спасибо.

1 Ответ

1 голос
/ 28 мая 2020

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

where description regexp 'lorem.{0,19}ipsum'

Неясно, хотите ли вы, чтобы все символы 'ipsum' содержались в следующих 20 символах или просто начинались. Предполагается, что вы хотите, чтобы это началось в следующих 20. Вы можете настроить 19, если хотите больше ipsum в 20 символов.

Если вы хотите точное совпадение слов, используйте слово delimiters:

where description regexp 'lorem.{0,19}[^a-zA-Z]ipsum[^a-zA-Z]'

Возможно, у вас есть лучшее выражение для разделителей слов. MySQL недавно переключил библиотеки регулярных выражений, поэтому я не решаюсь использовать что-то вроде \b.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...