2010-12-27 1 views
0

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

Например:

озера= ничего не делать, только 1 слово
Golden Lake= ничего не делать, только два слова
Озера Золотой= Extract " «

В сущности, я хочу составить список слов« мусор »t o удалять, когда я создаю предложения метафонов.

+0

Это будет сложно в MySQL. Его реализация в регулярном выражении позволяет выбирать строки, где определенное поле соответствует определенному регулярному выражению. Таким образом, вы не можете извлекать части поля для создания нового списка в MySQL. И даже если бы вы могли, вам нужно искать, чтобы делать именно то, что вы хотите, и регулярные выражения POSIX также не поддерживают это. –

ответ

3
SELECT 'Lake of gold' RLIKE '[[:<:]].+[[:>:]].+[[:<:]].{1,3}[[:>:]].+[[:<:]].+[[:>:]]' 

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

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

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

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