MySQL-এ কমা-সেপারেটেড স্ট্রিং কলামে নির্দিষ্ট মান আছে কিনা চেক করতে FIND_IN_SET() ফাংশন সবচেয়ে সহজ এবং দক্ষ। রেজেক্স ব্যবহার করার দরকার নেই।
সিনট্যাক্স
SELECT * FROM yourTableName WHERE FIND_IN_SET(search_value, column_name);
টেবিল ও ডেটা
mysql> CREATE TABLE demo17 (
-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> first_name VARCHAR(50),
-> value TEXT
-> );
mysql> INSERT INTO demo17 (first_name, value) VALUES
('John', '50'), ('David', ''), ('Adam', '50,89'), ('Adam', '49,89,43');
mysql> SELECT * FROM demo17; +----+------------+----------+ | id | first_name | value | +----+------------+----------+ | 1 | John | 50 | | 2 | David | | | 3 | Adam | 50,89 | | 4 | Adam | 49,89,43 | +----+------------+----------+
FIND_IN_SET কোয়ারি (৫০ খুঁজুন)
mysql> SELECT * FROM demo17 WHERE FIND_IN_SET(50, value); +----+------------+-------+ | id | first_name | value | +----+------------+-------+ | 1 | John | 50 | | 3 | Adam | 50,89 | +----+------------+-------+
ব্যাখ্যা: FIND_IN_SET('50', '50,89') → ১ (পাওয়া গেলে পজিশন রিটার্ন করে, ০ = নেই)। এটি কমা দিয়ে আলাদা করা স্ট্রিংয়ের জন্য অপ্টিমাইজড। LIKE '%50%' ব্যবহার করলে '150'-ও ম্যাচ হয়ে যাবে (ফলস পজিটিভ)।