我有一个包含一堆社区名称的字段的表。其中一些社区的名称包含 2 个或更多单词。如何获取 3 个或更少字符且出现在名称中间且包含 3 个或更多单词的单词列表?
例如:
Lake =什么都不做,只有 1 个单词
Golden Lake =什么都不做,只有 2 个单词
Lakes of Gold =提取“的”
本质上,我想列出一个“垃圾”词列表,以便在构建变音位句子时删除。
SELECT 'Lake of gold' RLIKE '[[:<:]].+[[:>:]].+[[:<:]].{1,3}[[:>:]].+[[:<:]].+[[:>:]]'
不幸的是,MySQL
只能匹配正则表达式,不能提取模式。您必须在MySQL
脚本端进行过滤和提取。
SELECT * FROM mytable WHERE mycolumn REGEXP "[[:alnum:]]+[[:space:]]+[[:alnum:]]{1,3}[[:space:]]+[[:alnum:]]+";
将查找在另外两个单词之间包含至少一个最多 3 个字符的单词的所有条目。
您不能直接在 MySQL 中提取单词,但这会过滤相关行。您必须在单独的步骤中进行提取。