Det här är ungefär samma fråga som Kan Mysql dela en kolumn?
MySQL har ingen split string-funktion så du måste göra omvägar. Du kan göra vad som helst med informationen när du delar upp den med någon av metoderna som anges på svarssidan ovan.
Du kan loopa över den anpassade funktionen och bryta när den återgår tom, du måste spela och lära dig lite syntax (eller åtminstone jag skulle göra det) men syntaxen för en FOR-loop i mysql är här:http://www.roseindia.net/sql/mysql-example/for.shtml
Du kan iterera över det och öka positionen i funktionen nedan:
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/ )
Som ska returnera '' om ingen matchning hittas, så bryt slingan om ingen matchning hittas. Detta gör att du med endast mysql kan analysera den delade strängen och köra infogningsfrågorna i en temporär tabell. Men varför inte bara använda ett skriptspråk som php för den typen av arbete? :(
Kod för loopsyntax:
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 $$