hvis du bare prøver at bryde strengene ud, kan du bare hardkode 1 og 2 derinde sådan her, og der er ingen grund til at få fat i 1 og 2 i taltabellen, da den tabel i øjeblikket er hardkodet til at indeholde 1 og 2 alligevel.
SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1),
@U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);
men så bemærkede jeg, at du ikke engang behøver at ringe til SUBSTRING_INDEX() to gange.. det virker også
SET @V = SUBSTRING_INDEX(new.Vu, ' ', 1),
@U = SUBSTRING_INDEX(new.Vu,' ', -1);
OPDATERING efter at have set din kommentar, kan jeg se, hvorfor du ønskede at oprette tabel numbers
så din trigger ville være noget som dette. Først opretter du tabel numbers
der indeholder rækker, der har n værdier fra 1 til 10 (maksimalt antal felter, der kan opdeles i rækker). Derefter vælger du fra numbers
hvor n værdier er <=antal felter i dit nummer. Anvend derefter SUBSTRING_INDEX() funktioner for at få feltet til 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 for at se trigger i aktion