Това е почти същият въпрос като Може ли Mysql да раздели колона?
MySQL няма функция за разделяне на низ, така че трябва да се заобиколите. Можете да правите всичко с данните, след като ги разделите, като използвате един от методите, изброени на страницата с отговори по-горе.
Можете да преминете през тази персонализирана функция и да прекъснете, когато се върне празна, ще трябва да играете и да научите някакъв синтаксис (или поне аз бих), но синтаксисът за цикъл FOR в mysql е тук:http://www.roseindia.net/sql/mysql-example/for.shtml
Можете да го повторите, като увеличите позицията във функцията по-долу:
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, '');
(Кредит:https://blog.fedecarg.com /2009/02/22/mysql-split-string-function/ )
Което трябва да върне '', ако не е намерено съвпадение, така че прекъсвайте цикъла, ако не бъде намерено съвпадение. Това ще ви позволи само с mysql да анализирате разделения низ и да стартирате заявките за вмъкване във временна таблица. Но човече, защо просто не използвате скриптов език като php за такъв вид работа? :(
Код за синтаксис на цикъла:
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 $$