MySQL-এ REGEXP ব্যবহার করে স্ট্রিং-এর মধ্যে অপশনাল প্যাটার্ন (যেমন: সংখ্যা বা লাইন এন্ড) ম্যাচ করা যায়।
উদাহরণ
mysql> CREATE TABLE DemoTable (EmployeeCode VARCHAR(100));
Query OK, 0 rows affected (0.56 sec)
mysql> INSERT INTO DemoTable VALUES
('EMPLOYEE:100 John Smith'),
('EMPLOYEE:16537 Chris Brown'),
('EMPLOYEE:100 David Miller'),
('EMPLOYEE:100 23432 David Miller');
Query OK, 4 rows affected
সব রেকর্ড
mysql> SELECT * FROM DemoTable;
+---------------------------------+ | EmployeeCode | +---------------------------------+ | EMPLOYEE:100 John Smith | | EMPLOYEE:16537 Chris Brown | | EMPLOYEE:100 David Miller | | EMPLOYEE:100 23432 David Miller | +---------------------------------+
EMPLOYEE:100 এর পর সরাসরি নন-ডিজিট বা লাইন এন্ড
mysql> SELECT * FROM DemoTable WHERE EmployeeCode REGEXP 'EMPLOYEE:100([^0-9]|$)';
+---------------------------------+ | EmployeeCode | +---------------------------------+ | EMPLOYEE:100 John Smith | | EMPLOYEE:100 David Miller | | EMPLOYEE:100 23432 David Miller | +---------------------------------+
রেগেক্স ব্যাখ্যা
EMPLOYEE:100→ লিটেরেল মিলান([^0-9]|$)→ দুটি অপশন:[^0-9]→ ডিজিট ছাড়া যেকোনো ক্যারেক্টার (স্পেস, লেটার ইত্যাদি)$→ স্ট্রিংয়ের শেষ (এন্ড-অফ-লাইন)
- তাই "EMPLOYEE:100 subito" মэтচ করবে, "EMPLOYEE:10023432" মэтচ করবে না (যদি অপশনাল গ্রুপে $ না থাকে)
- উপরের কোয়েরিতে
$থাকায় "EMPLOYEE:100 23432..." ও মэтচ করেছে (স্পেস মэтচ করেছে[^0-9]-এ)
শুধু EMPLOYEE:100 এবং তারপর স্পেস/লাইন-এন্ড (কোনো ডিজিট নয়)
WHERE EmployeeCode REGEXP '^EMPLOYEE:100([^0-9]|$)';