Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql:Varchar-Wert aufteilen und Teile einfügen

So funktioniert es, inklusive Testdaten und so weiter.

Aber bedenken Sie, dass dies nur ein Spaß ist Antworten. Der Weg zu gehen ist eindeutig eine gespeicherte Prozedur oder eine Funktion oder was auch immer.

drop table testvar;
create table testvar (id int, codes varchar(20));
insert into testvar values (1, '|1|2|3|4'), (2, '|5|6|7|8');



drop table if exists inserttest;
create table inserttest (id int, code int);

select @sql:=left(concat('insert into inserttest values ', group_concat( '(', id, ',', replace(right(codes, length(codes) - 1), '|', concat( '),(', id, ',' )), '),' separator '')), length(concat('insert into inserttest values ', group_concat( '(', id, ',', replace(right(codes, length(codes) - 1), '|', concat( '),(', id, ',' )), '),' separator ''))) -1)
from testvar;

prepare stmt1 from @sql;
execute stmt1;

select * from inserttest;