【问题标题】:MySQL Search Query Using LIKE使用 LIKE 的 MySQL 搜索查询
【发布时间】:2013-05-27 11:17:53
【问题描述】:

我正在尝试构建一个带有一些输入参数的查询。有几点需要注意...

  1. 并非所有参数都需要传递给查询。
  2. 如果一个参数不被传递给查询,它是否仍然被传递但作为NULL
  3. 如果未传递参数,我将如何构建它以不包含该参数?

所以说你有...

IN name VARCHAR(30),
IN age VARCHAR(2),
IN address VARCHAR(50)

而您只想按名称搜索...

SELECT * FROM Table WHERE 
(
NAME LIKE CONCAT(name, '%')
);

这似乎不起作用,因为没有传递年龄。或者如果传递了姓名和地址但没有传递年龄怎么办?我将如何构建它?

【问题讨论】:

    标签: mysql sql search keyword


    【解决方案1】:

    作为之前的发布者状态,为未使用的参数传递 NULL。然后构造您的查询类似于...

    SELECT * FROM Table WHERE 
    (
      ((nameParameter IS NULL) OR (NameColumn LIKE '%' + NameParameter + '%'))
      AND 
      ((ageParameter IS NULL) OR (AgeColumn = ageParameter))
      AND 
      ((addressParameter IS NULL) OR (AddressColumn = addressParameter))
    )
    

    【讨论】:

      【解决方案2】:

      问题是可选参数不能在 MYSQL 中使用。

      解决方法是为参数传递空值,并在存储过程中使用 IF 语句来处理不同的情况。

      看这里:

      Writing optional parameters within stored procedures in MySQL?

      【讨论】:

        【解决方案3】:

        试试这个:

        SELECT * FROM Table
        WHERE name LIKE '%nametofind%';
        

        【讨论】:

          猜你喜欢
          • 2011-10-04
          • 2012-09-26
          • 1970-01-01
          • 2012-02-26
          • 2014-10-18
          • 2011-04-09
          • 1970-01-01
          • 2020-12-24
          • 2016-08-12
          相关资源
          最近更新 更多