MySQL-এ ডট (.) সমাহিত স্ট্রিং (যেমন ভার্সন নম্বর: 19.6, 18.4) এ LIKE সঠিক কাজ করে না কারণ ডট ওয়াইল্ডকার্ড হিসেবে ব্যাখ্যা হয়। সমাধান: REGEXP ব্যবহার করুন।
টেবিল এবং ডেটা
CREATE TABLE DemoTable (
GameReleaseVersion VARCHAR(20)
);
INSERT INTO DemoTable VALUES('19.6');
INSERT INTO DemoTable VALUES('18.4');
INSERT INTO DemoTable VALUES('17.6');
INSERT INTO DemoTable VALUES('19.5');
সমস্যা: LIKE কাজ করে না
-- এটি ভুল ফলাফল দেবে কারণ . যেকোনো ক্যারেক্টার ম্যাচ করে
SELECT * FROM DemoTable WHERE GameReleaseVersion LIKE '19.%';
সমাধান: REGEXP ব্যবহার
SELECT * FROM DemoTable
WHERE GameReleaseVersion REGEXP '^19\\.[0-9]+$';
ফলাফল
+--------------------+
| GameReleaseVersion |
+--------------------+
| 19.6 |
| 19.5 |
+--------------------+
রেজেক্স ব্যাখ্যা
^— স্ট্রিংয়ের শুরু19— শুনdenly '19' ম্যাচ\\.— লিটারেল ডট (এস্কেপ করা)[0-9]+— এক বা একাধিক ডিজিট$— স্ট্রিংয়ের শেষ
অন্যান্য উদাহরণ
-- 1.x.x ফরম্যাট
WHERE Version REGEXP '^1\\.[0-9]+\\.[0-9]+$'
-- শুধু সংখ্যা ও ডট
WHERE Version REGEXP '^[0-9.]+$'