om du bara försöker bryta ut strängarna kan du bara hårdkoda 1 och 2 där så här och det finns ingen anledning att ta tag i 1 och 2 i taltabellen eftersom den tabellen för närvarande är hårdkodad för att innehålla 1 och 2 ändå.
SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1),
@U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);
men sedan märkte jag att du inte ens behöver ringa SUBSTRING_INDEX() två gånger..detta fungerar också
SET @V = SUBSTRING_INDEX(new.Vu, ' ', 1),
@U = SUBSTRING_INDEX(new.Vu,' ', -1);
UPPDATERA efter att ha sett din kommentar förstår jag varför du ville skapa tabell numbers
så din utlösare skulle vara ungefär så här. Först skapar du tabell numbers
som innehåller rader som har n värden från 1 till 10 (möjligt maximalt antal fält att dela upp i rader). Sedan väljer du från numbers
där n värden är <=antal fält i ditt nummer. Använd sedan SUBSTRING_INDEX() funktioner för att få fältet på n position.
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 för att se triggern i aktion