我使用了下面的存储过程来动态获取表名并获取搜索关键字。
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetTableLength`(IN TABLE_NAME VARCHAR(100),
IN SEARCH VARCHAR(150)) BEGIN IF (SEARCH = '') THEN
SET @query = CONCAT('select count(*) as total from ',TABLE_NAME); ELSE
SET @query = CONCAT('select count(userId) as total from ',TABLE_NAME, ' WHERE userName like ', SEARCH); END IF; PREPARE stmt3
FROM @query; EXECUTE stm3; END
当我调用上面的程序时,如下所示。
CALL GetTableLength('usertbl', 'kisan')
这里,kisan 是搜索关键字。
然后出现以下错误。怎么了?
错误代码:1054。“where 子句”中存在未知列“kisan”
最佳答案
尝试像下面这样使用:
set @query = CONCAT("select count(userId) as total from ",table_name, " WHERE userName like '", search,"'");
即使你也可以尝试:
set @query = CONCAT("select count(userId) as total from ",table_name, " WHERE userName like '%", search,"%'");
关于mysql - 如何在MySql存储过程中同时使用Count和Like子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21040286/