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

MySQL-এ REGEXP ব্যবহার করে রেগুলার এক্সপ্রেশন ভিত্তিক সিলেক্ট কোয়েরি করুন

MySQL-এ কলাম মান রেগুলার এক্সপ্রেশন প্যাটার্ন অনুযায়ী ফিল্টার করতে REGEXP (বা RLIKE) অপারেটর ব্যবহার করা হয়। এটি LIKE চেয়ে অনেক বেশি শক্তিশালী এবং linh hoạt।

উদাহরণ

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

mysql> CREATE TABLE DemoTable1573 (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentCode VARCHAR(20)
    -> );

২. ডেটা ইনসার্ট করুন

mysql> INSERT INTO DemoTable1573(StudentCode) VALUES('STU_774');
mysql> INSERT INTO DemoTable1573(StudentCode) VALUES('909_Sam');
mysql> INSERT INTO DemoTable1573(StudentCode) VALUES('3_Carol_455');
mysql> INSERT INTO DemoTable1573(StudentCode) VALUES('David_903');

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

mysql> SELECT * FROM DemoTable1573;

আউটপুট:

+-----------+-------------+
| StudentId | StudentCode |
+-----------+-------------+
| 1         | STU_774     |
| 2         | 909_Sam     |
| 3         | 3_Carol_455 |
| 4         | David_903   |
+-----------+-------------+

৪. REGEXP দিয়ে আন্ডারস্কোর এবং ডিজিট প্যাটার্ন মিল করুন

mysql> SELECT * FROM DemoTable1573 WHERE StudentCode REGEXP '_[0-9]';

নোট: ওরিজিনাল কোয়েরিতে '\land[0-9]' ছিল, যা সম্ভবত '_[0-9]' বা '[0-9]_' এর টাইপো। '_[0-9]' মানে আন্ডারস্কোর তারপর একটি ডিজিট।

৫. ফলাফল

+-----------+-------------+
| StudentId | StudentCode |
+-----------+-------------+
| 2         | 909_Sam     |
| 3         | 3_Carol_455 |
+-----------+-------------+

ব্যাখ্যা:

  • 'STU_774' - '_7' আছে, কিন্তু '_[0-9]' প্যাটার্ন ম্যাচ করবে (ম্যাচ হওয়া উচিত ছিল)। উদাহরণের আউটপুটে এটি নেই, সম্ভবত প্যাটার্ন '_[0-9]$' (শেষে) বা অন্য কিছু।
  • '909_Sam' - '_S' (ডিজিট নয়), '_[0-9]' ম্যাচ করবে না। উদাহরণের আউটপুটে এটি আছে - প্যাটার্ন ভিন্ন হতে পারে।

সঠিক প্যাটার্ন উদাহরণ:

  • REGEXP '^[0-9]+_' - সংখ্যা দিয়ে শুরু, তারপর আন্ডারস্কোর।
  • REGEXP '_[0-9]+$ - আন্ডারস্কোর তারপর সংখ্যা দিয়ে শেষ।
  • REGEXP '[0-9]{3}' - তিনটি সিকোয়েন্সিয়াল ডিজিট।

MySQL 8.0+ এ REGEXP_LIKE(), REGEXP_SUBSTR(), REGEXP_REPLACE() ফাংশনও আছে।

  1. MySQL-এ ৫ সংখ্যা দিয়ে শুরু হওয়া ইমেইল ঠিকানা বের করা (রেগুলার এক্সপ্রেশন)

  2. MySQL-এ একটি কোয়েরি দিয়ে দুটি টেবিল থেকে ডেটা নির্বাচন করা

  3. MySQL-এ ORDER BY Amount=0, Amount দিয়ে শূন্য মানগুলো শেষে পাঠানো

  4. MySQL-এ SELECT কুয়েরি দিয়ে INSERT করা (INSERT ... SELECT)