我有一个包含一堆邻域名称的字段的表。这些社区中的一些具有2个或更多单词的名称。如何获得3个或更少字符的单词列表,并出现在3个或更多单词的名称中间?
例如:
Lake = 什么都不做,只有1个字
金湖 = 什么都不做,只有2个字
Lakes of Gold = 提取“of”
本质上,我想在构建metaphone语句时列出要删除的“垃圾”单词。
答案 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中提取单词,但这会过滤相关的行。你必须在一个单独的步骤中进行提取。