als je alleen maar de strings probeert te doorbreken, kun je de 1 en 2 daarin gewoon zo hardcoderen en het is niet nodig om 1 en 2 in de getallentabel te pakken, aangezien die tabel momenteel hardgecodeerd is om toch 1 en 2 te bevatten.
SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1),
@U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);
maar toen merkte ik dat je SUBSTRING_INDEX() niet eens twee keer hoeft te bellen..dit werkt ook
SET @V = SUBSTRING_INDEX(new.Vu, ' ', 1),
@U = SUBSTRING_INDEX(new.Vu,' ', -1);
UPDATE na het zien van je reactie, begrijp ik waarom je tabel numbers
wilt maken dus je trigger zou zoiets als dit zijn. Eerst maak je tabel numbers
die rijen bevat met n waarden van 1 tot 10 (mogelijk maximum aantal velden om in rijen op te splitsen). Vervolgens selecteert u uit numbers
waarbij n waarden <=aantal velden in uw getal zijn. Pas vervolgens SUBSTRING_INDEX() functies toe om het veld op n positie te krijgen.
create table numbers
select 1 as n
union select 2
union select 3
union select 4
union select 5
union select 6
union select 7
union select 8
union select 9
union select 10;
CREATE TRIGGER `edit2` AFTER INSERT
ON `table1`
FOR EACH ROW BEGIN
INSERT INTO table2 (number,player,team,position)
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.number,' ',n),' ',-1) as number,
NEW.player as player,
SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.team,', ',n),', ',-1) as team,
SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.position,' ',n),' ',-1) as position
FROM
numbers n
WHERE LENGTH(NEW.number)
- LENGTH(REPLACE(NEW.number,' ',''))
+ 1 >= n.n;
END
sqlfiddle om trigger in actie te zien