यदि आप केवल स्ट्रिंग्स को तोड़ने की कोशिश कर रहे हैं, तो आप इस तरह से 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
जिसमें पंक्तियाँ हैं जिनमें 1 से 10 तक n मान हैं (पंक्तियों में विभाजित करने के लिए फ़ील्ड की अधिकतम संख्या संभव है)। फिर आप numbers
में से चुनें जहां n मान <=आपकी संख्या में फ़ील्ड की संख्या है। फिर फ़ील्ड को n स्थिति में लाने के लिए SUBSTRING_INDEX() फ़ंक्शन लागू करें।
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