To prawie to samo pytanie, co Czy Mysql może podzielić kolumnę?
MySQL nie posiada funkcji split string, więc musisz obejść ten problem. Możesz zrobić wszystko z danymi po podzieleniu ich za pomocą jednej z metod wymienionych na powyższej stronie odpowiedzi.
Możesz zapętlić tę niestandardową funkcję i przerwać, gdy zwróci puste, będziesz musiał zagrać i nauczyć się jakiejś składni (a przynajmniej ja bym to zrobił), ale składnia dla pętli FOR w mysql jest tutaj:http://www.roseindia.net/sql/mysql-example/for.shtml
Możesz go iterować, zwiększając pozycję w poniższej funkcji:
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, '');
(Źródło:https://blog.fedecarg.com /2009/02/22/mysql-split-string-function/ )
Który powinien zwrócić '', jeśli nie zostanie znalezione dopasowanie, więc przerwij pętlę, jeśli nie zostanie znalezione dopasowanie. To pozwoli ci tylko mysql analizować podzielony ciąg i uruchamiać zapytania insert do tabeli tymczasowej. Ale człowieku, dlaczego nie używać po prostu języka skryptowego takiego jak php do tego rodzaju pracy? :(
Kod składni pętli:
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 $$