mysql文字列を配列に変換

910 ワード

mysql自体は配列をサポートしていないので、ネットでいくつかの資料を調べて、修正して、臨時表を使って実現しました.
drop table if exists list;
create temporary table list(id INT not null);

drop PROCEDURE if exists strings_to_array;
create PROCEDURE strings_to_array(s_str varchar(128), s_split varchar(3))
begin
  set @i = length(s_str) - length(replace(s_str,s_split,''));  --         
  set @left_str = s_str;
  while @i>0                --              
  do 
  set @sub_str = substr(@left_str,1,instr(@left_str,s_split)-1);            --            
  set @left_str = substr(@left_str,length(@sub_str)+length(s_split)+1);     --            
  set @n = trim(@sub_str);
  insert into list(id) values(@n);
  set @i = @i - 1;      
  end while;
  set @n = trim(@left_str);
  insert into list(id) values(@n);
end;

CALL strings_to_array('0,1,2,29,7,9,14',',');
select * from list;
DROP TEMPORARY TABLE IF EXISTS list;