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

MySQL-এ REGEXP ব্যবহার করে পাইপ-ডিলিমিটেড কলামে নির্দিষ্ট মান খুঁজুন

পাইপ (|) দিয়ে আলাদা করা মান থাকা কলাম থেকে নির্দিষ্ট মান খুঁজে বের করতে 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, '|', ',')) ব্যবহার করুন।

  1. MySQL-এ নির্দিষ্ট কলাম নামে টেবিল খুঁজে বের করা

  2. MySQL SUM() 집계 결과에 별칭(ALIAS) 붙여 컬럼명 지정하기

  3. MySQL-এ MATCH এবং AGAINST ব্যবহার করে নির্দিষ্ট কলামে স্ট্রিং খুঁজে বের করা

  4. MySQL AUTO_INCREMENT উদাহরণসহ (MySQL AUTO_INCREMENT with Examples)