一直在努力争取这个。 有没有办法找到我的表中所有行,其中“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$'
在这种情况下,该查询当然不起作用,如果反过来会是完美的。
有没有人知道这方面的解决方案?
答案 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;
(为了检查重音,我从你的桌子中选了一个不同的单词。)