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 - স্পেস কাউন্ট করে শব্দ সংখ্যা বের করুন।