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

MySQL-এ ডট (.) সমाहিত স্ট্রিংয়ের সাথে LIKE কাজ না করলে REGEXP ব্যবহার

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.]+$'
  1. MySQL-এ REGEXP ব্যবহার করে শুধু স্ট্রিং বা স্ট্রিং-নম্বর মিশ্র রেকর্ড ফিল্টার করা

  2. MySQL-এ কমা-সেপারেটেড স্ট্রিংয়ে নির্দিষ্ট সংখ্যা খুঁজে রো সিলেক্ট করা

  3. MySQL-এ REGEXP ব্যবহার করে নির্দিষ্ট সংখ্যা দিয়ে শুরু হওয়া স্ট্রিং-নম্বর রেকর্ড ফেচ করা

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