কম্পিউটার টিউটোরিয়াল

MySQL-এ কাস্টম ফাংশন তৈরি করে কমা-বিচ্ছিন্ন স্ট্রিংয়ের যোগফল বের করুন

MySQL-এ বিল্ট-ইন ফাংশন নেই কমা-বিচ্ছিন্ন স্ট্রিংয়ের যোগফল বের করার জন্য। কিন্তু স্টোরড ফাংশন লিখে এটি সহজে করা যায়।

উদাহরণ: কাস্টম ফাংশন তৈরি ও ব্যবহার

১. টেবিল তৈরি করুন

mysql> CREATE TABLE DemoTable (
    -> ListOfValues VARCHAR(50)
    -> );

৩. ডেটা ইনসার্ট করুন

mysql> INSERT INTO DemoTable VALUES('20,10,40,50,60');

৪. কাস্টম ফাংশন তৈরি করুন

mysql> DELIMITER $$
mysql> CREATE FUNCTION totalSumInCommaSeparatedString(input VARCHAR(50))
    -> RETURNS INT
    -> DETERMINISTIC
    -> NO SQL
    -> BEGIN
    ->     DECLARE totalSum INT DEFAULT 0;
    ->     WHILE INSTR(input, ',') > 0 DO
    ->         SET totalSum = totalSum + SUBSTRING_INDEX(input, ',', 1);
    ->         SET input = MID(input, INSTR(input, ',') + 1);
    ->     END WHILE;
    ->     RETURN totalSum + input;
    -> END $$
mysql> DELIMITER ;

৫. ফাংশন ব্যবহার করে যোগফল বের করুন

mysql> SELECT totalSumInCommaSeparatedString(ListOfValues) AS TotalSum FROM DemoTable;

৬. ফলাফল

+----------+
| TotalSum |
+----------+
| 180      |
+----------+

ফাংশন ব্যাখ্যা:

  • INSTR(input, ',') - কমার পজিশন বের করে।
  • SUBSTRING_INDEX(input, ',', 1) - প্রথম কমার আগের সংখ্যা।
  • MID(input, ...) - কমার পরের অংশ নতুন ইনপুট হিসেবে নেয়।
  • লুপ চলতে থাকে যতক্ষণ কমা পাওয়া যায়। শেষ সংখ্যা লুপের বাইরে যোগ হয়।

সতর্কতা: এটি শুধু পূর্ণসংখ্যার জন্য কাজ করে। দশমিক সংখ্যা হলে DECIMAL রিটার্ন টাইপ এবং CAST ব্যবহার করতে হবে। বড় ডেটাসেটের জন্য সেট-বейসড আপরোচ (JSON_TABLE, রিকার্সিভ CTE) ভালো।

  1. MySQL-এ কমা-বিন্যাসকৃত মান সহ র‍্যান্ডম সারি আনার পদ্ধতি

  2. MySQL-এ সংখ্যা মিশ্র স্ট্রিং সর্ট করুন

  3. C#-তে স্ট্রিং লিস্ট থেকে কমা-সেপারেটেড স্ট্রিং কীভাবে তৈরি করবেন?

  4. পাইথনে স্ট্রিং এবং সংখ্যা কনক্যাটেনেট করা