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, ',', ','))(শুধু পূর্ণ মান মেলে)। - সেরা পদ্ধতি: নরমালাইজড টেবিল ডিজাইন (আন্য টেবিলে আলাদা রো) ব্যবহার করুন।