:) 我在MySQL中创建了一个存储过程,如下所示:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `selectEmployees`(filter varchar(45))
BEGIN
SET @search=filter;
SELECT * FROM memo_employee me join memo_area ma on me.employee_areaid = ma.area_id
join memo_emptype mt on me.employee_typeid=mt.emptype_id
WHERE me.employee_empnum LIKE CONCAT('%', @search, '%') or
me.employee_lname LIKE CONCAT('%',@search,'%') or
me.employee_fname LIKE CONCAT('%',@search,'%') or
me.employee_mname LIKE CONCAT('%',@search,'%') or
ma.area_name LIKE CONCAT('%',@search,'%') or
mt.emptype_name LIKE CONCAT('%',@search,'%');
END
通过以下方式调用:
CALL selectEmployees('sam');
这个可行,但是当我尝试在我的搜索参数上添加字符时,例如执行以下操作:
CALL selectEmployees('sample');
即使数据库中存在任何内容,也不会返回任何内容。所以我在我的MySQL命令行中尝试了以下内容:
SELECT * FROM memo_employee me join memo_area ma on me.employee_areaid = ma.area_id
join memo_emptype mt on me.employee_typeid=mt.emptype_id
WHERE me.employee_empnum LIKE '%sample%' or
me.employee_lname LIKE '%sample%' or
me.employee_fname LIKE '%sample%' or
me.employee_mname LIKE '%sample%' or
ma.area_name LIKE '%sample%' or
mt.emptype_name LIKE '%sample%';
这个有效。因此,当参数长度超过3个字符时,问题出在CONCAT命令上。即使参数的字符数超过3,我该怎么办才能使CONCAT命令仍然有效?