【问题标题】:MYSQL using LIKE for a specific searchMYSQL 使用 LIKE 进行特定搜索
【发布时间】:2013-07-24 08:12:08
【问题描述】:

我遇到了一个不知道如何处理的搜索情况。我正在搜索一组列,例如字符串

Row 1: Column Content: 7;15;25
Row 2: Column Content: 5
Row 3: Column Content: 5;7

但我想要只有 5 个的行

示例:Select * from table where column like '%5%'

这种情况的问题是,当我只需要第 2 行和第 3 行时,查询将带回所有行

我可以对查询做些什么来获得想要的结果。

非常感谢您的帮助。如果对这个问题有任何困惑,我很乐意澄清。

【问题讨论】:

    标签: mysql string search sql-like


    【解决方案1】:

    怎么样:

    SELECT * FROM MyTable WHERE
    CONTENT LIKE '5;%'      -- Starts with 5
    OR CONTENT LIKE '%;5;%' -- 5 in the middle somewhere
    OR CONTENT LIKE '%;5'   -- Ends with 5
    OR CONTENT = '5';       -- 5 is the only item in the list
    

    您也可以将其简化为:

    SELECT * FROM MyTable WHERE concat(';',CONTENT,';') LIKE '%;5;%';
    

    这两种解决方案都可能导致性能相当差,尤其是在您的表很大的情况下。为了解决这个问题,我建议规范化这些数据并将每个选择作为一行存储在另一个表中。

    【讨论】:

    • 第一个最适合我正在使用的表。我同意你关于标准化部分的看法。哈哈。太感谢了。 :)
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2012-03-13
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    相关资源
    最近更新 更多