si vous essayez simplement de séparer les chaînes, vous pouvez simplement coder en dur les 1 et 2 comme ceci et il n'est pas nécessaire de saisir 1 et 2 dans la table des nombres puisque cette table est actuellement codée en dur pour contenir 1 et 2 de toute façon.
SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1),
@U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);
mais ensuite j'ai remarqué que vous n'avez même pas besoin d'appeler SUBSTRING_INDEX() deux fois..cela fonctionne aussi
SET @V = SUBSTRING_INDEX(new.Vu, ' ', 1),
@U = SUBSTRING_INDEX(new.Vu,' ', -1);
MISE À JOUR après avoir vu votre commentaire, je vois pourquoi vous vouliez créer un tableau numbers
donc votre déclencheur serait quelque chose comme ça. D'abord, vous créez une table numbers
qui contient des lignes qui ont n valeurs de 1 à 10 (nombre maximum possible de champs à décomposer en lignes). Ensuite, vous sélectionnez parmi les numbers
où n valeurs sont <=nombre de champs dans votre numéro. Appliquez ensuite les fonctions SUBSTRING_INDEX() pour obtenir le champ à la position 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 pour voir le déclencheur en action