在MySQL中检索具有3个或更少字符的单词

时间:2010-12-27 17:09:12

标签: mysql regex metaphone

我有一个包含一堆邻域名称的字段的表。这些社区中的一些具有2个或更多单词的名称。如何获得3个或更少字符的单词列表,并出现在3个或更多单词的名称中间?

例如:

Lake = 什么都不做,只有1个字
金湖 = 什么都不做,只有2个字
Lakes of Gold = 提取“of”

本质上,我想在构建metaphone语句时列出要删除的“垃圾”单词。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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

您无法直接在MySQL中提取单词,但这会过滤相关的行。你必须在一个单独的步骤中进行提取。