2017-02-14 59 views
0

在mySQL SELECT查詢中,我想根據WHERE子句中的PDO綁定搜索參數條件選擇客戶端表的行。像WHERE client = :searchStrmySQL:如何在SELECT查詢的CASE語句中使用PDO綁定參數?

有兩種情況: A)的搜索參數包含一個字符串或 B)的搜索參數爲空

在A的情況下的PARAM :searchStr包含例如一個客戶號「123 」。

所以我使用:WHERE client = :searchStr和查詢返回客戶端123如果客戶端在表中。

在B的情況下,字符串是空的。所以我不使用WHERE子句,查詢只是返回表中的所有客戶端

當然,我可以在SELECT查詢之外編寫一個IF .. ELSE語句。 但如何在SELECT查詢中使用CASE語句進行編碼?

喜歡的東西

CASE 
    WHEN :searchStr = '' THEN WHERE client = :searchStr 
END 

不起作用

回答

0
WHERE (:searchStr = '' or client = :searchStr) 

,或者如果:searchStr可以爲NULL,而不是隻是一個emprty字符串中使用

WHERE (:searchStr is null or client = :searchStr) 
+0

這個答案似乎是完美的,因爲我不知道完全需要CASE語句。但NULL不起作用,因爲在我的情況下,searchStr總是初始化並且只是空的。因爲我用一個字符串使用PDO準備語句,所以我需要使用雙重qoutes而不是單引號。 – Ben