Ini pertanyaan yang hampir sama dengan Dapatkah Mysql Membagi kolom?
MySQL tidak memiliki fungsi string split sehingga Anda harus melakukan pekerjaan di sekitar. Anda dapat melakukan apa saja dengan data setelah Anda membaginya menggunakan salah satu metode yang tercantum pada halaman jawaban di atas.
Anda dapat mengulang fungsi kustom itu dan istirahat ketika kembali kosong, Anda harus bermain dan mempelajari beberapa sintaks (atau setidaknya saya akan melakukannya) tetapi sintaks untuk loop FOR di mysql ada di sini:http://www.roseindia.net/sql/mysql-example/for.shtml
Anda dapat mengulanginya, menambah posisi dalam fungsi di bawah ini:
CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
(Kredit:https://blog.fedecarg.com /2009/02/22/mysql-split-string-function/ )
Yang seharusnya mengembalikan '' jika tidak ada kecocokan yang ditemukan, jadi putuskan loop jika tidak ada kecocokan yang ditemukan. Ini akan memungkinkan Anda untuk dengan hanya mengurai mysql di atas string terpisah dan menjalankan kueri penyisipan ke dalam tabel temp. Tapi kenapa tidak menggunakan bahasa scripting seperti php saja untuk pekerjaan seperti itu? :(
Kode untuk sintaks loop:
DELIMITER $$
CREATE PROCEDURE ABC(fullstr)
BEGIN
DECLARE a INT Default 0 ;
DECLARE str VARCHAR(255);
simple_loop: LOOP
SET a=a+1;
SET str=SPLIT_STR(fullstr,"|",a);
IF str='' THEN
LEAVE simple_loop;
END IF;
#Do Inserts into temp table here with str going into the row
insert into my_temp_table values (str);
END LOOP simple_loop;
END $$