2013-05-31 117 views
0

我想构建一个需要一些输入参数的查询。几点注意事项...使用LIKE的MySQL搜索查询

  1. 并非所有参数都需要传递给查询。
  2. 如果参数是不会被传递到查询,必须将它仍然可以过,但作为NULL通过呢?
  3. 如果参数不通过,我将如何构建它不包含参数?

所以说,你有...

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

,只想按名称搜索...

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

这似乎并没有工作,因为年龄WASN”没有通过。或者如果名字通过了,地址而不是年龄呢?我将如何建立?

回答

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)) 
) 
0

试试这个:

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