MySQL-এ কমা-সেপারেটেড স্ট্রিং কলামে LIKE ও LIMIT ব্যবহার করে পেজিনেশনসহ সার্চ করা যায়।
উদাহরণ
টেবিল তৈরি:
CREATE TABLE demo74 (
user_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_names VARCHAR(250)
);
ডেটা ইনসার্ট:
INSERT INTO demo74(user_names) VALUES ('John Smith1,John Smith2,John Smith3');
INSERT INTO demo74(user_names) VALUES ('John Smith1');
INSERT INTO demo74(user_names) VALUES ('David Smith1');
INSERT INTO demo74(user_names) VALUES ('John Smith1,John Smith2,John Smith3,John Smith4');
টেবিলের ডেটা:
+---------+-------------------------------------------------+ | user_id | user_names | +---------+-------------------------------------------------+ | 1 | John Smith1,John Smith2,John Smith3 | | 2 | John Smith1 | | 3 | David Smith1 | | 4 | John Smith1,John Smith2,John Smith3,John Smith4 | +---------+-------------------------------------------------+
কোয়েরি
'John Smith1' শব্দ থাকা রোগুলো সিলেক্ট (LIMIT 100):
SELECT * FROM demo74 WHERE user_names LIKE '%John Smith1%' ORDER BY user_id ASC LIMIT 100;
আউটপুট
+---------+-------------------------------------------------+ | user_id | user_names | +---------+-------------------------------------------------+ | 1 | John Smith1,John Smith2,John Smith3 | | 2 | John Smith1 | | 4 | John Smith1,John Smith2,John Smith3,John Smith4 | +---------+-------------------------------------------------+
ব্যাখ্যা:
LIKE '%John Smith1%'- আংশিক ম্যাচ (কমা-সেপারেটেড স্ট্রিংয়ের মধ্যে)।ORDER BY user_id ASC- সुसंगত অর্ডার নিশ্চিত করতে।LIMIT 100- সর্বোচ্চ ১০০ রো (পেজিনেশন)।
সতর্কতা: কমা-সেপারেটেড স্ট্রিংতে সার্চ করা নরমালাইজড ডিজাইন নয়। ভালো প্র্যাকটিস: আলাদা টেবিলে নরমালাইজড ফরমে রাখুন (one-to-many রিলেশনশিপ)। তবে লিগ্যাসি ডেটা বা কুইক প্রোটোটাইপের জন্য এটি কাজে আসে।
বিকল্প: FIND_IN_SET('John Smith1', user_names) > 0 (যদি স্ট্রিক্ট কমা-সেপারেটেড হয়)।