mysql - 如何在MySql存储过程中同时使用Count和Like子句?

标签 mysql stored-procedures

我使用了下面的存储过程来动态获取表名并获取搜索关键字。

 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/

相关文章:

sql-server - SQL Server 存储过程的限制 - 多个结果集/输出参数

php - 如何显示主分类及其子分类下的所有帖子?

sql-server - 如何在SSIS中使用输出参数从存储过程执行sql任务

t-sql - 如何使用 tSQLt 测试更新表(相对于返回结果集)的 SQL 存储过程

mysql - 对 VARCHAR 修改强制截断?

MySQL 插入循环

php - 在 MySQL 中调用存储过程后使用 GROUP BY

mysql - Duplicate Column Name 错误 MySQL 多个子查询

php - 在命令提示符下直接运行php时如何设置php路径

php - 计算 codeigniter 中的总小时数和分钟数?