একটি কলামে কমা (`,`) দিয়ে আলাদা করা মানগুলো থাকলে, সেখানে নির্দিষ্ট শব্দ খুঁজে বের করতে REGEXP ব্যবহার করা সবচেয়ে সহজ ও কার্যকর।
টেবিল ও ডেটা তৈরি
mysql> CREATE TABLE DemoTable1902 (Subjects TEXT);
mysql> INSERT INTO DemoTable1902 VALUES ('MongoDB,Java,Python');
mysql> INSERT INTO DemoTable1902 VALUES ('SQL Server,MySQL,PL/SQL');
mysql> INSERT INTO DemoTable1902 VALUES ('Hibernate,Spring,JPA');
ডেটা যাচাই
mysql> SELECT * FROM DemoTable1902;
+-------------------------+ | Subjects | +-------------------------+ | MongoDB,Java,Python | | SQL Server,MySQL,PL/SQL | | Hibernate,Spring,JPA | +-------------------------+
REGEXP কোয়েরি: 'MySQL' শব্দটি খুঁজে বের করা
mysql> SELECT * FROM DemoTable1902
WHERE Subjects REGEXP '(^|.*,)MySQL(,.*|$)';
রেজেক্স ব্যাখ্যা:
(^|.*,)— স্ট্রিংয়ের শুরু (^) অথবা কমা (,) দিয়ে শুরু।MySQL— খুঁজতে চাওয়া সঠিক শব্দ।(,.*|$)— কমা (,) দিয়ে শেষ অথবা স্ট্রিংয়ের শেষ ($)।
আউটপুট:
+-------------------------+ | Subjects | +-------------------------+ | SQL Server,MySQL,PL/SQL | +-------------------------+
অন্য উপায়: FIND_IN_SET()
যদি মানগুলো স্ট্রিক্টলি কমা-বিভক্ত হয় (স্পেস না থাকে), তবে FIND_IN_SET('MySQL', Subjects) > 0ও ব্যবহার করা যায়। কিন্তু REGEXP বেশি নমনীয়।
পরফরম্যান্স টিপ
বড় টেবিলে REGEXP ফুল টেবিল স্ক্যান করতে পারে। প্রায়ই খুঁজতে হলে FULLTEXT INDEX বা নরমালাইজড টেবিল (แยক টেবিল) ব্যবহার ভালো।