nếu bạn chỉ đang cố gắng phá vỡ các chuỗi, bạn chỉ có thể mã hóa cứng 1 và 2 trong đó như thế này và không cần lấy 1 và 2 trong bảng số vì bảng đó hiện được mã hóa cứng để chứa 1 và 2.
SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1),
@U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);
nhưng sau đó tôi nhận thấy bạn thậm chí không cần phải gọi SUBSTRING_INDEX () hai lần..cách này cũng hoạt động
SET @V = SUBSTRING_INDEX(new.Vu, ' ', 1),
@U = SUBSTRING_INDEX(new.Vu,' ', -1);
CẬP NHẬT sau khi xem nhận xét của bạn, tôi biết lý do tại sao bạn muốn tạo bảng numbers
vì vậy trình kích hoạt của bạn sẽ giống như thế này. Đầu tiên bạn tạo bảng numbers
chứa các hàng có n giá trị từ 1 đến 10 (số trường tối đa có thể chia thành các hàng). Sau đó, bạn chọn từ numbers
trong đó n giá trị là <=số trường trong số của bạn. Sau đó, áp dụng các hàm SUBSTRING_INDEX () để nhận trường ở vị trí 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 để xem trình kích hoạt đang hoạt động