Получение слов с 3 или менее символами в MySQL

У меня есть таблица с полем, которое содержит кучу названий окрестностей. Некоторые из этих районов имеют имена с 2 или более словами. Как я могу получить список слов, которые состоят из 3 или менее символов и встречаются в середине имени с 3 или более словами?

Например:

Озеро = ничего не делать, только 1 слово
Золотое озеро = ничего не делать, только 2 слова
Озера Золота = Экстракт "из"

По сути, я хочу составить список "мусорных" слов для удаления при построении предложений метафона.

2 ответа

Решение
SELECT  'Lake of gold' RLIKE '[[:<:]].+[[:>:]].+[[:<:]].{1,3}[[:>:]].+[[:<:]].+[[:>:]]'

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

SELECT * FROM mytable WHERE mycolumn REGEXP "[[:alnum:]]+[[:space:]]+[[:alnum:]]{1,3}[[:space:]]+[[:alnum:]]+";

найдет все записи, которые содержат как минимум одно слово длиной до 3 символов между двумя другими словами.

Вы не можете извлечь слова в MySQL напрямую, но это отфильтрует соответствующие строки. Вы должны сделать извлечение в отдельном шаге.

Другие вопросы по тегам