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

MySQL-এ কমা দিয়ে আলাদা সংখ্যা সম্বলিত কলাম থেকে নির্দিষ্ট সংখ্যা খুঁজে বের করা

MySQL-এ কমা দিয়ে আলাদা করা সংখ্যাগুলোর মধ্যে কোনো নির্দিষ্ট সংখ্যা আছে কিনা চেক করতে FIND_IN_SET() ফাংশন ব্যবহার করা হয়।

টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable (
    -> CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> CustomerName VARCHAR(20),
    -> CustomerAllProductPrice TEXT
    -> );
mysql> INSERT INTO DemoTable(CustomerName, CustomerAllProductPrice) 
    -> VALUES('Chris', '245,345,678,90,45,56,78');
mysql> INSERT INTO DemoTable(CustomerName, CustomerAllProductPrice) 
    -> VALUES('Chris', '98,99,90,56,77');
mysql> INSERT INTO DemoTable(CustomerName, CustomerAllProductPrice) 
    -> VALUES('David', '1000,2000,4000,56000');

সব রেকর্ড দেখুন

mysql> SELECT * FROM DemoTable;
+------------+--------------+-------------------------+
| CustomerId | CustomerName | CustomerAllProductPrice |
+------------+--------------+-------------------------+
|          1 | Chris        | 245,345,678,90,45,56,78 |
|          2 | Chris        | 98,99,90,56,77          |
|          3 | David        | 1000,2000,4000,56000    |
+------------+--------------+-------------------------+

৪০০০ সংখ্যাটি থাকা রো খুঁজে বের করা

mysql> SELECT * FROM DemoTable 
    -> WHERE FIND_IN_SET('4000', CustomerAllProductPrice);

ফলাফল

+------------+--------------+-------------------------+
| CustomerId | CustomerName | CustomerAllProductPrice |
+------------+--------------+-------------------------+
|          3 | David        | 1000,2000,4000,56000    |
+------------+--------------+-------------------------+

ব্যাখ্যা: FIND_IN_SET(str, strlist) ফাংশনটি strlist স্ট্রিংয়ের মধ্যে str আছে কিনা চেক করে। পাওয়া গেলে পজিশন (১-ভিত্তিক) রিটার্ন করে, নাও পেলে ০ রিটার্ন করে। WHERE ক্লজে ০ ফালস মনে হয়, তাই শুধু ম্যাচ করা রো গুলো ফেরত পাওয়া যায়।

সতর্কতা: এই পদ্ধতি বড় ডেটাসেটে ধীর হতে পারে। নরমালাইজড ডিজাইন ( আলাদা টেবিল) ভালো প্র্যাক্টিস।

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

  2. MySQL-এ SELECT কুয়েরি দিয়ে INSERT করা (INSERT ... SELECT)

  3. MySQL-এ কমা-সেপারেটেড কলাম থেকে নির্দিষ্ট মান খোঁজা (FIND_IN_SET)

  4. MySQL에서 GROUP_CONCAT으로 전체 컬럼 값을 콤마 구분 단일 행으로 합치기