小编典典

搜索电子邮件地址时,MySQL MATCH AGAINST

sql

我正在编写新闻稿脚本,并且需要在地址中实施搜索。我用FULLTEXT为该表编制了索引,但是当我执行以下查询时:

SELECT * FROM addresses WHERE MATCH(email) AGAINST("name@example.com" IN BOOLEAN MODE)

我得到奇怪的结果。它显示“ example.com”上的所有电子邮件以及用户名为“ name”的所有电子邮件。例如我得到:

john@example.com
name@mail.net
steven@example.com

我重新编写了查询,以使用LIKE“
%name@example.com%”,但是对于一个大表,它需要花费大量的时间才能完成。有解决方案吗?我想在搜索时仅显示完全匹配的电子邮件,而不显示其中的一部分。先感谢您。


阅读 281

收藏
2021-03-23

共1个答案

小编典典

要匹配确切的短语,您必须将该短语用双引号引起来。因此,将查询更改为:

SELECT * FROM addresses WHERE MATCH(email) AGAINST('"name@example.com"' INBOOLEAN MODE)

来源

2021-03-23