使用LIKE的MySQL搜索查询

时间:2013-05-31 15:16:34

标签: mysql sql search keyword

我正在尝试构建一个带有一些输入参数的查询。很少有事情要注意......

  1. 并非所有参数都需要传递给查询。
  2. 如果某个参数不会传递给查询,那么它仍然必须传递但是NULL
  3. 如果未传递参数,我将如何构建它以不包含参数?
  4. 所以说你有......

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

    你只想按名字搜索......

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

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

3 个答案:

答案 0 :(得分:1)

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

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

看看这里:

Writing optional parameters within stored procedures in MySQL?

答案 1 :(得分: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 :(得分:0)

试试这个:

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