Dette er stort set det samme spørgsmål som Kan Mysql opdele en kolonne?
MySQL har ikke en split string-funktion, så du er nødt til at arbejde rundt. Du kan gøre hvad som helst med dataene, når du deler dem ved hjælp af en af metoderne, der er angivet på svarsiden ovenfor.
Du kan sløjfe over den brugerdefinerede funktion og bryde, når den vender tilbage tom, du bliver nødt til at spille og lære noget syntaks (eller i det mindste ville jeg det), men syntaksen for en FOR-løkke i mysql er her:http://www.roseindia.net/sql/mysql-example/for.shtml
Du kan iterere over det og øge positionen i funktionen nedenfor:
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 skal returnere '', hvis der ikke findes noget match, så bryd løkken, hvis der ikke findes noget match. Dette vil tillade dig at med kun mysql parse over den delte streng og køre indsættelsesforespørgslerne ind i en midlertidig tabel. Men hvorfor ikke bare bruge et scriptsprog som php til den slags arbejde? :(
Kode til sløjfesyntaks:
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 $$