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

MySQL-এ কমা-বिभক্ত স্ট্রিংয়ে নির্দিষ্ট শব্দ খুঁজে বের করা (REGEXP)

একটি কলামে কমা (`,`) দিয়ে আলাদা করা মানগুলো থাকলে, সেখানে নির্দিষ্ট শব্দ খুঁজে বের করতে 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 বা নরমালাইজড টেবিল (แยক টেবিল) ব্যবহার ভালো।

  1. MySQL-এ সঠিক স্ট্রিং মান খুঁজে বের করা (COLLATE ব্যবহার)

  2. MySQL-এ কমা-বিভক্ত কলামে কোটেশন চিহ্ন যোগ করা

  3. MySQL에서 ^(캐럿) 문자가 포함된 컬럼명 찾기 (INFORMATION_SCHEMA 활용)

  4. MySQL-এ কমা-বিন্যাসকৃত মান সহ র‍্যান্ডম সারি আনার পদ্ধতি