0

我有一个包含一堆社区名称的字段的表。其中一些社区的名称包含 2 个或更多单词。如何获取 3 个或更少字符且出现在名称中间且包含 3 个或更多单词的单词列表?

例如:

Lake =什么都不做,只有 1 个单词
Golden Lake =什么都不做,只有 2 个单词
Lakes of Gold =提取“的”

本质上,我想列出一个“垃圾”词列表,以便在构建变音位句子时删除。

4

2 回答 2

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

不幸的是,MySQL只能匹配正则表达式,不能提取模式。您必须在MySQL脚本端进行过滤和提取。

于 2010-12-27T17:22:21.617 回答
0
SELECT * FROM mytable WHERE mycolumn REGEXP "[[:alnum:]]+[[:space:]]+[[:alnum:]]{1,3}[[:space:]]+[[:alnum:]]+";

将查找在另外两个单词之间包含至少一个最多 3 个字符的单词的所有条目。

您不能直接在 MySQL 中提取单词,但这会过滤相关行。您必须在单独的步骤中进行提取。

于 2010-12-27T17:29:39.577 回答