在存储过程中,mysql 中的 concat 函数,总是出现问题,不知道是毛?
DROP PROCEDURE IF EXISTS `TestPro`;
CREATE PROCEDURE TestPro()
BEGIN
-- SET @tableName = "_aaaa,_bbbb,_cccc,_dddd";
SET @tableName = "_aaaaa,_bbbb,_cccc,_dddd";
SET @i = 1;
WHILE @i <= 4
DO
set @sqlstr = concat('truncate table count_', 1, SUBSTRING_INDEX(SUBSTRING_INDEX(@tableName, ',', @i), ',', -1));
select @sqlstr;
SET @i = @i + 1;
END WHILE;
END
如果用注释的那行代码,即SET @tableName = "_aaaa,_bbbb,_cccc,_dddd"; 不会有任何问题。在 while 循环中,select 得到 4 个结果集。即:
truncate table count_1_aaaa
truncate table count_1_bbbb
truncate table count_1_cccc
truncate table count_1_dddd
如果将 @tableName 换成 SET @tableName = "_aaaaa,_bbbb,_cccc,_dddd"; 仅仅是多了一个字符 a ,得到的结果集:
truncate table count_1_aaaaa,_bbbb,_cccc,_dddd
truncate table count_1_bbbb
truncate table count_1_cccc
truncate table count_1_dddd
第一个结果集却出错了。不知道,有没有哪个大神遇到过这么奇葩的问题? mysql 版本 5.6