【问题标题】:Searching all columns with LIKE使用 LIKE 搜索所有列
【发布时间】:2015-05-05 15:52:42
【问题描述】:

我正在尝试实现搜索功能,我遇到了this question。它工作得非常出色。如果我搜索“go”,我会得到任何包含该组合的行,无论是“gold”、“bogo”还是“happygolucky”。但是现在,我想实现一些可以在搜索中输入“go the”的东西。对于上面的问题,我可以使用'%go%the%' 来做到这一点,并且它有效。但是,如果 'go' 的匹配项在 Name 中,并且 'the' 的匹配项在 Species 中,它仍然会显示该结果。如果匹配在同一列中,我只想得到结果。我的查询如下所示:

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

除了一些正则表达式巫毒魔法之外,有没有办法解决这个问题?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您只需要查询各个字段:

    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 FullText Search 功能

    【讨论】:

    • 是的,我是这么想的,但我真的希望不必这样做。 :(
    • 看看mysql全文功能是否符合你的要求。
    • 为什么你真的希望不做你需要做的事情来得到你想要的答案?优雅是可以的,但如果最好的算法是蛮力,那就是你的选择。
    猜你喜欢
    • 2018-11-03
    • 2011-04-17
    • 1970-01-01
    • 2015-11-17
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    相关资源
    最近更新 更多