পাইপ (|) দিয়ে আলাদা করা মান থাকা কলাম থেকে নির্দিষ্ট মান খুঁজে বের করতে MySQL-এ রেগুলার এক্সপ্রেশন (REGEXP) ব্যবহার করা হয়। এটি FIND_IN_SET() এর বিকল্প হিসেবে কাজ করে যখন ডেটা স্ট্যান্ডার্ড ফরম্যাটে না থাকে।
উদাহরণ
১. টেবিল তৈরি করুন
mysql> CREATE TABLE DemoTable (
-> Value VARCHAR(60)
-> );
২. পাইপ-ডিলিমিটেড ডেটা ইনসার্ট করুন
mysql> INSERT INTO DemoTable VALUES('8|56|78|45');
mysql> INSERT INTO DemoTable VALUES('9876');
mysql> INSERT INTO DemoTable VALUES('98|8');
mysql> INSERT INTO DemoTable VALUES('3|8|9');
mysql> INSERT INTO DemoTable VALUES('97|94');
mysql> INSERT INTO DemoTable VALUES('103|104|110|8|97');
৩. সব রেকর্ড দেখুন
mysql> SELECT * FROM DemoTable;
আউটপুট:
+------------------+
| Value |
+------------------+
| 8|56|78|45 |
| 9876 |
| 98|8 |
| 3|8|9 |
| 97|94 |
| 103|104|110|8|97 |
+------------------+
৪. পাইপের মাঝপথে '8' থাকা রো খুঁজুন (শুরু বা শেষে না)
mysql> SELECT * FROM DemoTable
-> WHERE Value REGEXP '\\|8\\|';
৫. ফলাফল
+------------------+
| Value |
+------------------+
| 3|8|9 |
| 103|104|110|8|97 |
+------------------+
ব্যাখ্যা: প্যাটার্ন '\\|8\\|' মানে পাইপ, তারপর ৮, তারপর আবার পাইপ। এতে '8|56...' (শুরুতে ৮) এবং '98|8' (শেষে ৮) বাদ পড়েছে।
টিপস: শুধু '8' থাকা সব রো পেতে WHERE Value REGEXP '[[:<:]]8[[:>:]]' (word boundary) বা WHERE FIND_IN_SET('8', REPLACE(Value, '|', ',')) ব্যবহার করুন।