यह काफी हद तक वही प्रश्न है जो क्या Mysql एक कॉलम को विभाजित कर सकता है?ए>
MySQL में स्प्लिट स्ट्रिंग फ़ंक्शन नहीं है, इसलिए आपको आसपास काम करना होगा। ऊपर दिए गए उत्तर पृष्ठ पर सूचीबद्ध विधियों में से किसी एक का उपयोग करके डेटा को विभाजित करने के बाद आप उसके साथ कुछ भी कर सकते हैं।
आप उस कस्टम फ़ंक्शन पर लूप कर सकते हैं और जब यह खाली हो जाता है तो ब्रेक कर सकते हैं, आपको कुछ सिंटैक्स खेलना और सीखना होगा (या कम से कम मैं करूँगा) लेकिन MySQL में फॉर लूप के लिए सिंटैक्स यहां है:http://www.roseindia.net/sql/mysql-example/for.shtml
आप इस पर पुनरावृति कर सकते हैं, नीचे दिए गए फ़ंक्शन में स्थिति को बढ़ा सकते हैं:
CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
(क्रेडिट:https://blog.fedecarg.com /2009/02/22/mysql-split-string-function/ )
यदि कोई मिलान नहीं मिलता है तो कौन सा वापस लौटना चाहिए, इसलिए यदि कोई मिलान नहीं मिलता है तो लूप तोड़ दें। यह आपको विभाजित स्ट्रिंग पर केवल MySQL पार्स के साथ और सम्मिलित प्रश्नों को एक अस्थायी तालिका में चलाने की अनुमति देगा। लेकिन आदमी उस तरह के काम के लिए सिर्फ PHP जैसी स्क्रिप्टिंग भाषा का उपयोग क्यों नहीं करता? :(
लूप सिंटैक्स के लिए कोड:
DELIMITER $$
CREATE PROCEDURE ABC(fullstr)
BEGIN
DECLARE a INT Default 0 ;
DECLARE str VARCHAR(255);
simple_loop: LOOP
SET a=a+1;
SET str=SPLIT_STR(fullstr,"|",a);
IF str='' THEN
LEAVE simple_loop;
END IF;
#Do Inserts into temp table here with str going into the row
insert into my_temp_table values (str);
END LOOP simple_loop;
END $$