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

MySQL-এ কমা-সেপারেটেড স্ট্রিং থেকে নির্দিষ্ট পজিশনের মান বের করা (SUBSTRING_INDEX)

MySQL-এ কমা-সেপারেটেড স্ট্রিং থেকে নির্দিষ্ট পজিশনের মান বের করার জন্য SUBSTRING_INDEX() ফাংশন দুবার ব্যবহার করা হয় (নেস্টেড)।

টেবিল এবং ডেটা

CREATE TABLE DemoTable1615 (
    ListOfSubject TEXT
);

INSERT INTO DemoTable1615 VALUES('Python,Java,MySQL,MongoDB,C,C++,ASP.net');

কুয়েরি: ৪র্থ পজিশনের মান (MongoDB)

SELECT SUBSTRING_INDEX(
    SUBSTRING_INDEX(ListOfSubject, ',', 4),
    ',', -1
) AS Position FROM DemoTable1615;

ফলাফল

+----------+
| Position |
+----------+
| MongoDB  |
+----------+

কিভাবে কাজ করে

  1. SUBSTRING_INDEX(ListOfSubject, ',', 4) — প্রথম ৪টি আইটেম নেয়: 'Python,Java,MySQL,MongoDB'
  2. SUBSTRING_INDEX(..., ',', -1) — সেটির শেষ আইটেম নেয়: 'MongoDB'

সাধারণ সূত্র

SUBSTRING_INDEX(SUBSTRING_INDEX(str, delim, n), delim, -1)
-- n-তম এলিমেন্ট বের করে (1-ভিত্তিক)

সতর্কতা

  • পজিশন ১-ভিত্তিক (১ = প্রথম)
  • স্পেস থাকলে কাজ নাও করতে পারে: 'Python, Java' → TRIM ব্যবহার করুন
  • বড় ডেটার জন্য JSON বা নরমালাইজড টেবিল ভালো

MySQL 8.0+: JSON_TABLE (আধুনিক)

SELECT jt.val FROM DemoTable1615,
    JSON_TABLE(CONCAT('["', REPLACE(ListOfSubject, ',', '","'), '"]'),
    '$[*]' COLUMNS(val VARCHAR(100) PATH '$')) AS jt
WHERE jt.ordinality = 4;
  1. MySQL-এ LENGTH ও REPLACE ব্যবহার করে কমা (,) গণনা করা

  2. MySQL-এ FIND_IN_SET() ব্যবহার করে কমা-বিন্যাসকৃত কলামে মান খুঁজে বের করা

  3. MySQL-এ SELECT ... INTO @variable ব্যবহার করে নির্দিষ্ট রো থেকে একক মান বের করা

  4. MySQL-এ নির্দিষ্ট শর্ত অনুযায়ী সিঙ্গেল রো বের করা