MySql Regexp结果词是已知单词的一部分

时间:2017-03-17 15:44:19

标签: mysql regex

一直在努力争取这个。 有没有办法找到我的表中所有行,其中“word”列中的单词是搜索词的一部分?

+---------+-----------------+
| id_word | word            |
+---------+-----------------+
|  177041 | utvälj          |
|  119270 | fonders         |
|   39968 | flamländarens   |
|   63567 | hänvisningarnas |
|   61244 | hovdansers      |
+---------+-----------------+

我想提取行119270,fonders。我想通过传递“plafonders”这个词来做到这一点。

SELECT * FROM words WHERE word REGEXP 'plafonders$'

在这种情况下,该查询当然不起作用,如果反过来会是完美的。

有没有人知道这方面的解决方案?

2 个答案:

答案 0 :(得分:1)

SELECT * FROM words WHERE 'plafonders' REGEXP concat(word, '$')

应该完成你想要的。你的正则表达式:

plafonders$

正在列的末尾寻找plafonders。这是在寻找列的所有内容,直到它结束,例如fonders$的正则表达式为119270

https://regex101.com/r/Ytb3kg/1/比较https://regex101.com/r/Ytb3kg/2/

答案 1 :(得分:0)

MySQL REGEXP不能很好地处理重音字母。也许它会在你有限的情况下正常工作。

这是一种稍微快一点的方法(虽然它仍然需要进行表扫描):

SELECT * FROM words
    WHERE   'PLAutvälj' =
      RIGHT('PLAutvälj', CHAR_LENGTH(word)) = word;

(为了检查重音,我从你的桌子中选了一个不同的单词。)