我在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." %'
应该做到这一点,只需在单词前后添加空格。