MySQL从文本内容返回精确的单词匹配

时间:2015-07-09 11:39:58

标签: php mysql

我想编写一个查询,可以比较字符串中的单词并返回完全匹配而不是像。

让我说我有一个名为txt的字段,其值为“Hello,I is string”

现在如果我搜索“am”然后它应该返回该行,如果我搜索“I”或“string”或“Hello”,那么它应该返回此行但是如果我搜索“a”,“tri “或”str“然后它不应该返回任何东西

1 个答案:

答案 0 :(得分:1)

正确答案可能是全文搜索。

但是,有两点需要注意。如果您有短字符串,例如产品说明或用户评论,并希望使用like,则可以执行以下操作:

where concat(' ', txt, ' ') like concat('% ', $word, ' %')

但是,这假定分隔符是空格。所以,它找不到"你好"。您可以通过执行以下操作来解决此问题:

where concat(' ', replace(txt, ',' ' '), ' ') like concat('% ', $word, ' %')

但是你很快就会发现这很痛苦。因此:全文搜索。

其次,如果您真的在列中存储关键字,那么解决方案就更简单了。不要这样做。创建一个联结表,每个原始表行有一行,每个关键字有一行。在SQL中存储字符串中的列表是一个坏主意。