Mysql 使用LIKE搜索所有列

Mysql 使用LIKE搜索所有列,mysql,sql,Mysql,Sql,我正试图实现一个搜索功能,我遇到了。它工作得非常出色。如果我搜索,比如说“go”,我会得到任何一行有这种组合,无论是“gold”,还是“bogo”,或者“HappyGollky”。但是现在,我想实现一些东西,我可以在搜索中键入“go the”。有了上面的问题,我可以使用'%go%the%'来实现这一点,它是有效的。但是,如果“go”的匹配项在名称中,而“the”的匹配项在物种中,则仍会显示该结果。我只想在匹配项位于同一列时得到结果。我的查询如下所示: select * from tbl_fis

我正试图实现一个搜索功能,我遇到了。它工作得非常出色。如果我搜索,比如说“go”,我会得到任何一行有这种组合,无论是“gold”,还是“bogo”,或者“HappyGollky”。但是现在,我想实现一些东西,我可以在搜索中键入“go the”。有了上面的问题,我可以使用
'%go%the%'
来实现这一点,它是有效的。但是,如果“go”的匹配项在
名称中,而“the”的匹配项在
物种中,则仍会显示该结果。我只想在匹配项位于同一列时得到结果。我的查询如下所示:

select * 
from tbl_fish 
where concat(Name, Size, Color, Species, Description) 
LIKE '%afr%vio%';

除了一些regex巫术之外,还有什么方法可以做到这一点吗?

您只需要查询各个字段:

select * 
from tbl_fish 
where Name LIKE '%afr%vio%'
    OR Size LIKE '%afr%vio%'
    OR Color LIKE '%afr%vio%'
    OR Species LIKE '%afr%vio%'
    OR Description LIKE '%afr%vio%';

你也可以看看这项功能

是的,我也这么想,但我真的希望不用这么做(看看mysql全文功能是否适合您的要求。为什么您真的不希望做您需要做的事情来得到您想要的答案?如果您可以拥有它,优雅是很好的,但是如果最好的算法是暴力,那么这就是您要做的。