【问题标题】:"Merge" IN and LIKE operator in MysqlMysql中的“合并”IN和LIKE运算符
【发布时间】:2011-12-06 20:22:03
【问题描述】:

我有一个问题,我在猜测是否有更好的方法来实现我的目标。我在 Mysql 中有这个查询来检索一些行:

SELECT *
FROM table
WHERE field IN ('V','S','G','B')

我想做的是运行一个查询来检索字段具有值的行,如 IN 列表中的那些。我知道最简单的方法是使用这个查询:

SELECT *
FROM table
WHERE field LIKE '%V%' OR field LIKE '%S%' OR
      field LIKE '%G%' OR field LIKE '%B%'

我想知道的是有一个操作符可以执行此操作,或者至少,如果该操作符不存在,是编写查询的更好方法。

感谢所有帮助我的人。

【问题讨论】:

    标签: mysql sql database sql-like in-operator


    【解决方案1】:

    将值放入表中 (Params) 然后使用

    SELECT *
      FROM table
     WHERE EXISTS (
                   SELECT * 
                     FROM Params
                    WHERE table.field LIKE '%' + Params.col + '%'
                  );
    

    考虑将通配符也放入Params 表中的值中。

    【讨论】:

    • 但是您需要SELECT table.* ... GROUP BY table.PK 来消除重复的发现(因此查询严格等同于 OP)。
    猜你喜欢
    • 2020-05-28
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多