MySQL-এ কমা-সেপারেটেড স্ট্রিং কলাম থেকে নির্দিষ্ট মান খোঁজার জন্য FIND_IN_SET() ফাংশন ব্যবহার করা হয়। এটি সেট-বেসড সার্চের জন্য অপ্টিমাইজড।
টেবিল এবং ডেটা
CREATE TABLE DemoTable (
ListOfValue VARCHAR(20)
);
INSERT INTO DemoTable VALUES('78,89,65');
INSERT INTO DemoTable VALUES('88,96,97');
INSERT INTO DemoTable VALUES('95,96,99,100');
INSERT INTO DemoTable VALUES('78,45,67,98');
কুয়েরি: ৮৯ বা ৯৯ থাকা রো বের করা
SELECT * FROM DemoTable
WHERE FIND_IN_SET('89', ListOfValue)
OR FIND_IN_SET('99', ListOfValue);
ফলাফল
+--------------+
| ListOfValue |
+--------------+
| 78,89,65 |
| 95,96,99,100 |
+--------------+
FIND_IN_SET সিনট্যাক্স
FIND_IN_SET(str, strlist)
str— খুঁজতে চাওয়া মানstrlist— কমা-সেপারেটেড স্ট্রিং- রিটার্ন: পজিশন (১-ভিত্তিক), না পাওয়া গেলে ০
সতর্কতা
- স্পেস থাকলে কাজ করে না:
'78, 89, 65'— এখানে '89' পাবে না - ইন্ডেক্স ব্যবহার করে না, বড় টেবিলে ধীর হয়
- নরমালাইজড ডিজাইন (অলগ টেবিল) ভালো সমাধান
বিকল্প: JSONContains (MySQL 5.7+)
WHERE JSON_CONTAINS(JSON_ARRAY(78,89,65), '89')