ако просто се опитвате да разбиете низовете, можете просто да кодирате 1 и 2 вътре по този начин и няма нужда да вземете 1 и 2 в таблицата с числа, тъй като тази таблица в момента е твърдо кодирана да съдържа 1 и 2 така или иначе.
SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1),
@U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);
но след това забелязах, че дори не е нужно да се обаждате на SUBSTRING_INDEX() два пъти..това също работи
SET @V = SUBSTRING_INDEX(new.Vu, ' ', 1),
@U = SUBSTRING_INDEX(new.Vu,' ', -1);
АКТУАЛИЗИРАНЕ след като видях вашия коментар, разбирам защо сте искали да създадете таблица numbers
така че вашият тригер ще бъде нещо подобно. Първо създавате таблица numbers
който съдържа редове, които имат n стойности от 1 до 10 (възможен максимален брой полета за разделяне на редове). След това избирате от numbers
където n стойности са <=брой полета във вашия номер. След това приложете функции SUBSTRING_INDEX(), за да получите полето на позиция 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, за да видите задействането в действие