我在mysql数据库中有一些文本,并且我正在使用此查询来尝试用php匹配查询中的确切单词:

$palavra = "aquecimento";

$query = "SELECT * FROM webqda_fontesInt_text WHERE plainText REGEXP '[[:<:]]" . $palavra . "[[:>:]]' AND projectoId='$projectoId' AND reciclagem='0' AND id='$id' GROUP BY id";


有人可以解释一下为什么返回诸如“ aquecimento”,“ aquecimentos”,“ desaquecimentos”之类的记录吗?

我只想返回完全匹配项,但它没有正常工作。

先感谢您!



更多信息

我也可以输入要返回的“ aquecimento”或“ aquecimento!”之类的单词。

最佳答案

最终更新

好的,我能够看一下并进行一些测试。最终使它起作用:

WHERE plainText RLIKE '[ ]".$palavra."[?!.,]?[ ]'


只需在[]内添加更多标点符号,并注意转义那些需要转义的项目。

让我知道任何问题。 (我不知道这是否是处理它的最佳方法,但它确实有效)。就是说,如果有人有任何建议,请告诉我,我将相应地进行修改。



更新资料

好的,阅读一些应该是您想要的:

    WHERE plainText REGEXP'\ s“。$ palavra。” [!。] {1} \ s'

我不是100%使用正则表达式,可能需要进行调整。对于信息,我使用了MySQL Manual for REGEXP。如果我有机会测试/调整它,我会的。祝你好运。



旧答案:
为什么不只使用LIKE代替正则表达式呢?

WHERE plainText LIKE '% ".$palavra." %'


应该做到这一点,只需在单词前后添加空格。

09-30 13:30