MySQL LIKE命令使用CONCAT功能限制3字符输入

时间:2015-03-14 04:12:36

标签: mysql stored-procedures sql-like concat

:) 我在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命令仍然有效?

0 个答案:

没有答案