2015-10-20 35 views
0

以下是不起作用的简化查询。Concat选择类似于%string的查询%

SET @abc = CONCAT('%','string','%'); 

SET @query = CONCAT('SELECT * 
FROM table 
WHERE column LIKE ',@abc); 

PREPARE stmt FROM @query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

我需要使用CONCAT和SELECT,因为在真正的查询中有很多其他变量。当我在WHERE子句使用一些简单的COLUMN = XYZ

房地产查询工作正常。但是,没有什么工作,当我尝试使用LIKE%XYZ% ...

+0

让我猜测,你用'string''替代另一个列名吗? – lad2025

+0

你需要的功能是“动态SQL” - http://stackoverflow.com/questions/190776/how-to-have- dynamic-sql-in-mysql-stored-procedure –

回答

1

使用方法如下

SET @abc = CONCAT('"%','string','%"'); 

SET @query = CONCAT('SELECT * 
FROM table 
WHERE column LIKE ',@abc); 

PREPARE stmt FROM @query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

检查我已经加入“,以示@abc像 ”字符串%%的第一行“

+0

这是否解决了你的问题? –