2013-05-31 113 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%';