Toto je v podstatě stejná otázka jako Může Mysql rozdělit sloupec?
MySQL nemá funkci rozděleného řetězce, takže musíte něco obejít. Jakmile je rozdělíte, můžete s daty dělat cokoli pomocí jedné z metod uvedených na stránce odpovědí výše.
Tuto vlastní funkci můžete přepnout do smyčky a přerušit, když se vrátí prázdná, budete si muset zahrát a naučit se nějakou syntaxi (nebo alespoň já bych to udělal), ale syntaxe pro smyčku FOR v mysql je zde:http://www.roseindia.net/sql/mysql-example/for.shtml
Můžete to iterovat a zvyšovat pozici ve funkci níže:
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/ )
Což by mělo vrátit '', pokud nebude nalezena žádná shoda, takže přerušte smyčku, pokud nebude nalezena žádná shoda. To vám umožní analyzovat rozdělený řetězec pouze pomocí mysql a spustit dotazy vložení do dočasné tabulky. Ale proč pro takovou práci nepoužít skriptovací jazyk, jako je php? :(
Kód pro syntaxi smyčky:
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 $$