2015-09-04 130 views
1

我面臨一個問題,我的查詢可以執行,但是當我調用存儲過程符合操作數應該包含1列。以上是我查詢的一部分如何在MYSQL中使用Like語句?

if p_Opt = 'RETRIEVE-P' THEN  

Set @'query' = ('SELECT Company,Branch,user_id,name,priority,email,UserGroup, Status FROM UserAuth WHERE 1=1 '); 

    If p_Company Is Not Null THEN 

      Set @'query' = @'query' + ' AND Company LIKE '''+ '%' + p_Company + '%' + ''''; 
     END if; 

END IF;

問題是什麼?對我的查詢是否正確?

回答

0

而不是使用單個qoutes在類似查詢中使用雙引號,如下所示。

if p_Opt = 'RETRIEVE-P' THEN  

    Set @'query' = ('SELECT Company,Branch,user_id,name,priority,email,UserGroup, Status FROM UserAuth WHERE 1=1 '); 

     If p_Company Is Not Null THEN 

       Set @'query' = @'query' + ' AND Company LIKE "%' + p_Company + '%"'; 
      END if; 
+0

感謝它解決我的問題 –

+0

你可以投票給我,如果是正確的 – Pradeep

+0

其實,這工作,但是錯誤的,因爲它很容易受到SQL注入。 MySQL提供'QUOTE()'函數來正確引用文字,如果你堅持連接,並且它理解如何處理NULL。準備好的陳述會更好。 https://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_quote –