sql >> Databasteknik >  >> RDS >> Mysql

mysql:dela varchar-värde och infoga delar

Så här fungerar det, inklusive testdata och så vidare.

Men tänk på att det här bara är kul svar. Vägen att gå är helt klart en lagrad procedur eller en funktion eller vad som helst.

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;


  1. MySQL - autoincrement till guid

  2. MySQL Connector ODBC odbc.ini 'Option' flaggvärden

  3. MySQL SIN() Funktion – Returnera sinus för ett tal i MySQL

  4. Dela en kolumn i flera rader