MySQL-এ REGEXP অপারেটর ব্যবহার করে একটি কলামে একাধিক প্যাটার্ন ম্যাচ করা যেতে পারে। এটি LIKE-এর চেয়ে শক্তিশালী এবং ফ্লেক্সিবল।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> ProductId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ProductName VARCHAR(20)
-> );
mysql> INSERT INTO DemoTable(ProductName) VALUES('Product-1');
mysql> INSERT INTO DemoTable(ProductName) VALUES('Product2');
mysql> INSERT INTO DemoTable(ProductName) VALUES('Product1');
mysql> INSERT INTO DemoTable(ProductName) VALUES('Product-3');
mysql> INSERT INTO DemoTable(ProductName) VALUES('Product3');
mysql> INSERT INTO DemoTable(ProductName) VALUES('Product-4');
mysql> INSERT INTO DemoTable(ProductName) VALUES('Product4');
সব রেকর্ড দেখুন
mysql> SELECT * FROM DemoTable;
+-----------+-------------+
| ProductId | ProductName |
+-----------+-------------+
| 1 | Product-1 |
| 2 | Product2 |
| 3 | Product1 |
| 4 | Product-3 |
| 5 | Product3 |
| 6 | Product-4 |
| 7 | Product4 |
+-----------+-------------+
REGEXP দিয়ে 'Product' এর পর ১,২,৩,৪ অঙ্ক সহ রো সিলেক্ট
mysql> SELECT * FROM DemoTable
-> WHERE ProductName REGEXP 'Product[1234].*';
ফলাফল
+-----------+-------------+
| ProductId | ProductName |
+-----------+-------------+
| 2 | Product2 |
| 3 | Product1 |
| 5 | Product3 |
| 7 | Product4 |
+-----------+-------------+
ব্যাখ্যা:
Product- শব্দটি मैच করতে হবে[1234]- ক্যারেক্টার ক্লাস: ১, ২, ৩, বা ৪ যেকোনো একটি.*- এরপর যেকোনো ক্যারেক্টার (০ বা অধিক)
ম্যাচ হয়েছে: Product2, Product1, Product3, Product4
ম্যাচ হয়নি: Product-1 (হাইফেনের পর ১), Product-3, Product-4 (কারণ হাইফেন [1234]-এ নেই)
হাইফেনসহ সব Product-১,২,৩,৪ ম্যাচ করতে
SELECT * FROM DemoTable
WHERE ProductName REGEXP 'Product-?[1234]';
-? মানে হাইফেন থাকতে পারে বা নাও থাকতে পারে।
REGEXP প্যাটার্ন চিটশিট
| প্যাটার্ন | অর্থ |
|---|---|
^abc | abc দিয়ে শুরু |
abc$ | abc দিয়ে শেষ |
[abc] | a বা b বা c |
[a-z] | a থেকে z যেকোনো অক্ষর |
. | যেকোনো একক ক্যারেক্টার |
.* | যেকোনো ক্যারেক্টার ০ বা অধিকবার |
.+ | যেকোনো ক্যারেক্টার ১ বা অধিকবার |
? | পূর্বের ক্যারেক্টার ০ বা ১ বার |