2015-09-04 112 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 –