这个问题与 SoulieBaby 的问题基本类似:Split MYSQL results into 4 arrays,只是我想将结果拆分为包含特定长度。
说,我想要一个长度为 9 的数组的结果被拆分,并且拆分后的数组包含 5 个长度。所以第一个数组有 5 个,第二个数组有 4 个。
这可能吗?
非常感谢您的帮助!
这个问题与 SoulieBaby 的问题基本类似:Split MYSQL results into 4 arrays,只是我想将结果拆分为包含特定长度。
说,我想要一个长度为 9 的数组的结果被拆分,并且拆分后的数组包含 5 个长度。所以第一个数组有 5 个,第二个数组有 4 个。
这可能吗?
非常感谢您的帮助!
引用的问题希望始终有 4 个块,因此解决方案是创建 size 块ceil(count($array) / 5)
。
这种情况更容易,(最大)大小是恒定的,但块的数量会有所不同。
因此答案很简单:
array_chunk($array, 5);
尝试:
DELIMITER $$
CREATE PROCEDURE split (in data varchar(500),in cad char(1))
BEGIN
declare pos int default 0;
declare numero int default 0;
declare van int default 0;
declare a varchar(500) default '';
drop TEMPORARY table IF EXISTS tmp_split;
create TEMPORARY table tmp_split(dato varchar(500)) ENGINE=MEMORY;
set pos=LOCATE(cad,data);
while pos<>0 do
set numero=numero+1;
set pos=LOCATE(cad,data,pos+1);
end while;
set a=SUBSTRING_INDEX(data,cad,1);
while numero>van do
set data=SUBSTRING(data,LENGTH(a)+2);
insert into tmp_split values (a);
set a=SUBSTRING_INDEX(data,cad,1);
set van=van+1;
end while;
insert into tmp_split values (a);
select * from tmp_split;
END
call split('1,2,5,52,64,365,9714,253,6697,8,9,2,62',',');