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

MySQL-এ FIND_IN_SET() দিয়ে কমা-সেপারেটেড VARCHAR লিস্ট থেকে নির্দিষ্ট ID খুঁজে বের করা


FIND_IN_SET() ফাংশন দিয়ে CSV স্ট্রিং থেকে মান খোঁজা

MySQL-এ FIND_IN_SET(str, csv_list) ফাংশন কমা-সেপারেটেড স্ট্রিং (CSV) থেকে নির্দিষ্ট মান আছে কিনা চেক করে। পজিশন (১-বেসড) রিটার্ন করে, না থাকলে ০।

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable (Id VARCHAR(255));
mysql> INSERT INTO DemoTable VALUES('10,100,1000'), ('101,120,2'), ('3,4,5');

সব রেকর্ড

+-------------+
| Id          |
+-------------+
| 10,100,1000 |
| 101,120,2   |
| 3,4,5       |
+-------------+

FIND_IN_SET দিয়ে '2' খুঁজা

mysql> SELECT * FROM DemoTable WHERE FIND_IN_SET('2', Id);
+-----------+
| Id        |
+-----------+
| 101,120,2 |
+-----------+

ব্যাখ্যা

  • FIND_IN_SET('2', Id) — Id কলামের CSV-এ '2' আছে কিনা চেক করে।
  • WHERE-এ শুধু ফাংশন কল করলেই কাজ করে (০ ছাড়া যেকোনো সংখ্যা TRUE)।
  • দ্বিতীয় আর্গুমেন্টটি অবশ্যই কমা-সেপারেটেড স্ট্রিং হতে হবে (স্পেস থাকলে কাজ নাও করতে পারে)।

সীমাবদ্ধতা

  • FIND_IN_SET শুধু কমা (,) সেপারেটরের জন্য কাজ করে।
  • অন্য সেপারেটর (সেমিকোলন, পাইপ) হলে REPLACE() দিয়ে কমায় কনভার্ট করুন।
  • বড় ডেটাসেটে পারফরম্যান্স খারাপ (ইনডেক্স ব্যবহার হয় না)। নরমালাইজেশন ( আলাদা টেবিল) ভালো সমাধান।
  1. MySQL-এ FIND_IN_SET() + REPLACE() দিয়ে সেমিকোলন-সেপারেটেড লিস্ট থেকে মান খুঁজে বের করা

  2. MySQL-এ ডেটা ভ্যালুযুক্ত রেকর্ড থেকে সর্বশেষ তারিখ বের করার পদ্ধতি

  3. MySQL-এ VARCHAR টাইপ কলাম থেকে নির্দিষ্ট তারিখের পরের ডেটা খুঁজে বের করা (STR_TO_DATE)

  4. MySQL-এ VARCHAR কলাম থেকে সর্বোচ্চ সংখ্যাগত মান বের করা