Получение слов с 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 напрямую, но это отфильтрует соответствующие строки. Вы должны сделать извлечение в отдельном шаге.