在mysql MATCH()AGAINST()中转义特殊字符的正确方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (291)

无法找到任何令人满意的信息,可以在匹配(...)中使用完全特殊的字符(...)。例如,我在表格列中有两行字符串,我想匹配:

  1. “%add %% receipt%= french spaghetti”
  2. “%add %% ingredient%=主收据”

当我做

SELECT * FROM log WHERE MATCH(text) AGAINST('+%receipt%' IN BOOLEAN MODE);

结果我得到了两行。我完全需要第一个(只有收据)。

我也试过AGAINST('+"%receipt%"' IN BOOLEAN MODE)但没有成功。

有什么办法可以解决这个问题?

提问于
用户回答回答于

如果查询正常,您只需要第一行。最简单的解决方案是使用LIMIT

SELECT * FROM log WHERE MATCH(text) AGAINST('+%receipt%' IN BOOLEAN MODE) LIMIT 1;

扫码关注云+社区

领取腾讯云代金券