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

MySQL-এ REGEXP ব্যবহার করে নির্দিষ্ট সংখ্যক শব্দ থাকা রেকর্ড ফিল্টার করুন

MySQL-এ কলাম মানতে নির্দিষ্ট সংখ্যক শব্দ (স্পেস দিয়ে বিভক্ত) আছে কিনা চেক করতে রেগুলার এক্সপ্রেশন (REGEXP) ব্যবহার করা হয়।

সিনট্যাক্স (২ শব্দের জন্য)

SELECT * FROM yourTableName WHERE yourColumnName REGEXP '[^ ]+ [^ ]+$';

নোট: ওরিজিনাল প্যাটার্ন '\land[\land ]+[ ]+[\land ]+$' গুলোছাড়। সঠিক প্যাটার্ন নিচে দেওয়া হলো।

উদাহরণ

১. টেবিল তৈরি করুন

mysql> CREATE TABLE DemoTable1412 (Name VARCHAR(40));

২. ভিন্ন শব্দ সংখ্যক ডেটা ইনসার্ট করুন

mysql> INSERT INTO DemoTable1412 VALUES('John Adam Carol');  -- ৩ শব্দ
mysql> INSERT INTO DemoTable1412 VALUES('Mike Sam');       -- ২ শব্দ
mysql> INSERT INTO DemoTable1412 VALUES('Chris James Robert'); -- ৩ শব্দ

৩. সব রেকর্ড দেখুন

mysql> SELECT * FROM DemoTable1412;

আউটপুট:

+--------------------+
| Name               |
+--------------------+
| John Adam Carol    |
| Mike Sam           |
| Chris James Robert |
+--------------------+

৪. ঠিক ২ শব্দ থাকা রেকর্ড খুঁজুন

mysql> SELECT * FROM DemoTable1412 WHERE Name REGEXP '^[^ ]+ [^ ]+$';

৫. ফলাফল

+----------+
| Name     |
+----------+
| Mike Sam |
+----------+

প্যাটার্ন ব্যাখ্যা:

  • ^ - স্ট্রিং শুরু।
  • [^ ]+ - স্পেস ছাড়া এক বা একাধিক ক্যারেক্টার (প্রথম শব্দ)।
  • - একক স্পেস (সেপারেটর)।
  • [^ ]+ - দ্বিতীয় শব্দ।
  • $ - স্ট্রিং শেষ।

জেনারিক N শব্দের জন্য: REGEXP '^([^ ]+ ){N-1}[^ ]+$' (MySQL 8.0+ এ কোয়ান্টিফায়ার সাপোর্ট)। MySQL 5.7-এ রিপিট প্যাটার্ন লিখতে হয়।

বিকল্প (MySQL 8.0+): LENGTH(Name) - LENGTH(REPLACE(Name, ' ', '')) + 1 = 2 - স্পেস কাউন্ট করে শব্দ সংখ্যা বের করুন।

  1. MySQL-এ REGEXP ব্যবহার করে শুধু স্ট্রিং বা স্ট্রিং-নম্বর মিশ্র রেকর্ড ফিল্টার করা

  2. MySQL-এ কমা-সেপারেটেড স্ট্রিংয়ে নির্দিষ্ট সংখ্যা খুঁজে রো সিলেক্ট করা

  3. MySQL-এ REGEXP ব্যবহার করে নির্দিষ্ট সংখ্যা দিয়ে শুরু হওয়া স্ট্রিং-নম্বর রেকর্ড ফেচ করা

  4. MySQL-এ FIND_IN_SET ব্যবহার করে কমা-সেপারেটেড কলামে নির্দিষ্ট সংখ্যা খুঁজে রো সিলেক্ট করা