MySQL প্রসিডিউরে স্ট্রিং স্প্লিট করে সব মানগুলোতে লুপ চালাতে REPLACE() ফাংশন ব্যবহার করার প্রয়োজন নেই। বুঝতে প্রথমে একটি স্ট্রোড প্রসিডিউর তৈরি করা যাক এবং তারপর একটি টেবিল তৈরি করে স্ট্রোড প্রসিডিউরকে কিছু ভ্যালু দিয়ে কল করা যাক। ভ্যালুটা টেবিলে ইনসার্ট হবে।
স্ট্রোড প্রসিডিউর তৈরির কোয়েরি নিচে দেওয়া হলো:
mysql> DELIMITER // mysql> CREATE PROCEDURE SP_SplitString(Value longtext)
-> BEGIN
-> DECLARE front TEXT DEFAULT NULL;
-> DECLARE frontlen INT DEFAULT NULL;
-> DECLARE TempValue TEXT DEFAULT NULL;
-> iterator:
-> LOOP
-> IF LENGTH(TRIM(Value)) = 0 OR Value IS NULL THEN
-> LEAVE iterator;
-> END IF;
-> SET front = SUBSTRING_INDEX(Value,',',1);
-> SET frontlen = LENGTH(front);
-> SET TempValue = TRIM(front);
-> INSERT INTO store (allValues) VALUES (TempValue);
-> SET Value = INSERT(Value,1,frontlen + 1,'');
-> END LOOP;
-> END // Query OK, 0 rows affected (0.22 sec) mysql> DELIMITER ;
এখন স্ট্রোড প্রসিডিউরের ভ্যালু সংরক্ষণ করার জন্য একটি টেবিল তৈরি করা যাক। টেবিল তৈরির কোয়েরি:
mysql> CREATE TABLE store( -> Id int NOT NULL AUTO_INCREMENT, -> allValues varchar(30), -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.63 sec)
টেবিল থেকে সব রেকর্ড দেখানো যাক। কোয়েরি হলো:
mysql> select *from store; Empty set (0.00 sec)
শুরুতে টেবিলে কোনো রেকর্ড নেই। CALL কমান্ড দিয়ে স্ট্রোড প্রসিডিউর কল করা যাক। কোয়েরিটি হলো:
mysql> call SP_SplitString('Hi,Hello,Good Morning,Bye'); Query OK, 1 row affected (1.02 sec)
উপরের স্ট্রোড প্রসিডিউর কল করার পর আবার টেবিলের রেকর্ড চেক করা যাক। টেবিল থেকে সব রেকর্ড দেখানোর কোয়েরি:
mysql> select *from store;
আউটপুট নিচে দেওয়া হলো:
+----+--------------+ | Id | allValues | +----+--------------+ | 1 | Hi | | 2 | Hello | | 3 | Good Morning | | 4 | Bye | +----+--------------+ 4 rows in set (0.00 sec)
ব্যাখ্যা: স্ট্রোড প্রসিডিউর SP_SplitString একটি কমা-সেপারেটড স্ট্রিং ইনপুট হিসেবে নেয়। SUBSTRING_INDEX(Value, ',', 1) দিয়ে প্রথম কমার আগের অংশ বের করে, TRIM() দিয়ে স্পেস দুর করে store টেবিলে ইনসার্ট করে। তারপর INSERT(Value, 1, frontlen+1, '') দিয়ে প্রসেস করা অংশটি মূল স্ট্রিং থেকে বাদ দিয়ে দেয়। লুপটি চলতে থাকে যতক্ষণ না স্ট্রিং খালি বা NULL হয়। এটি MySQL-এ স্ট্রিং স্প্লিটিং-এ একটি সাধারণ প্যাটার্ন।