se stai solo cercando di spezzare le stringhe, puoi semplicemente codificare 1 e 2 in questo modo e non è necessario prendere 1 e 2 nella tabella dei numeri poiché quella tabella è attualmente codificata per contenere comunque 1 e 2.
SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1),
@U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);
ma poi ho notato che non hai nemmeno bisogno di chiamare SUBSTRING_INDEX() due volte... anche questo funziona
SET @V = SUBSTRING_INDEX(new.Vu, ' ', 1),
@U = SUBSTRING_INDEX(new.Vu,' ', -1);
AGGIORNAMENTO dopo aver visto il tuo commento, capisco perché hai voluto creare la tabella numbers
quindi il tuo trigger sarebbe qualcosa del genere. Per prima cosa crei la tabella numbers
che contiene righe con n valori da 1 a 10 (possibile numero massimo di campi da suddividere in righe). Quindi seleziona da numbers
dove n valori sono <=numero di campi nel tuo numero. Quindi applica le funzioni SUBSTRING_INDEX() per ottenere il campo in posizione n.
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 per vedere il trigger in azione