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

MySQL-এ LIKE অপারেটর ব্যবহার করে কমা-বিচ্ছিন্ন স্ট্রিং থেকে পূর্ণসংখ্যা খুঁজুন

MySQL-এ কমা-বিচ্ছिन्न স্ট্রিং কলাম থেকে নির্দিষ্ট পূর্ণসংখ্যা খুঁজে বের করতে LIKE অপারেটর ওয়াইল্ডকার্ড (%) দিয়ে ব্যবহার করা হয়। তবে এটি আংশিক মিলও দেয় (যেমন '80' খুঁজলে '80.2' ও '45.80' দুইটোই মেলে)।

উদাহরণ

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

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> DoubleValue VARCHAR(20)
    -> );

২. কমা-বিচ্ছिन्न দশমিক মান ইনসার্ট করুন

mysql> INSERT INTO DemoTable(DoubleValue) VALUES('80.2,90.5,88.90');
mysql> INSERT INTO DemoTable(DoubleValue) VALUES('78.56,45.80,88,45.6');
mysql> INSERT INTO DemoTable(DoubleValue) VALUES('12.34,90.06,89.90');

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

mysql> SELECT * FROM DemoTable;

আউটপুট:

+----+---------------------+
| Id | DoubleValue         |
+----+---------------------+
| 1  | 80.2,90.5,88.90     |
| 2  | 78.56,45.80,88,45.6 |
| 3  | 12.34,90.06,89.90   |
+----+---------------------+

৪. '80' সম্বন্ধীয় রেকর্ড খুঁজুন

mysql> SELECT * FROM DemoTable WHERE DoubleValue LIKE '%80%';

৫. ফলাফল

+----+---------------------+
| Id | DoubleValue         |
+----+---------------------+
| 1  | 80.2,90.5,88.90     |
| 2  | 78.56,45.80,88,45.6 |
+----+---------------------+

সীমাবদ্ধতা ও সমাধান:

  • সমস্যা: '80' খুঁজলে '45.80', '80.2', '180' সব মেলে।
  • সমাধান ১ (MySQL 8.0+): WHERE DoubleValue REGEXP '[[:<:]]80[[:>:]]' (word boundary) বা REGEXP '(^|,)80(,|$)'।
  • সমাধান ২: WHERE FIND_IN_SET('80', REPLACE(DoubleValue, ',', ',')) (শুধু পূর্ণ মান মেলে)।
  • সেরা পদ্ধতি: নরমালাইজড টেবিল ডিজাইন (আন্য টেবিলে আলাদা রো) ব্যবহার করুন।
  1. MySQL-এ কমা-বিন্যাসকৃত মান সহ র‍্যান্ডম সারি আনার পদ্ধতি

  2. MySQL-এ FIND_IN_SET() ব্যবহার করে কমা-বিন্যাসকৃত কলামে মান খুঁজে বের করা

  3. MySQL-এ কমা-বिभক্ত স্ট্রিংয়ে নির্দিষ্ট শব্দ খুঁজে বের করা (REGEXP)

  4. MySQL-এ FIND_IN_SET() ব্যবহার করে কমা-সেপারেটেড লিস্টে মান খুঁজে বের করা