MySQL में डॉट (.) वाले स्ट्रिंग्स (जैसे संस्करण संख्या) में पैटर्न मिलान के लिए LIKE विश्वसनीय नहीं है क्योंकि डॉट वाइल्डकार्ड के रूप में कार्य करता है। इसके बजाय REGEXP का उपयोग करें।
समस्या
LIKE '19.%' में डॉट किसी भी वर्ण से मेल खाता है, केवल शाब्दिक डॉट से नहीं।
समाधान: REGEXP
SELECT * FROM table_name
WHERE column_name REGEXP '^19\\.[0-9]+$';
उदाहरण
तालिका बनाएं और संस्करण डेटा डालें:
mysql> CREATE TABLE DemoTable (GameReleaseVersion VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES ('19.6'), ('18.4'), ('17.6'), ('19.5');
डेटा
+--------------------+
| GameReleaseVersion |
+--------------------+
| 19.6 |
| 18.4 |
| 17.6 |
| 19.5 |
+--------------------+
REGEXP क्वेरी: 19 से शुरू होने वाले संस्करण
mysql> SELECT * FROM DemoTable
-> WHERE GameReleaseVersion REGEXP '^19\\.[0-9]+$';
परिणाम
+--------------------+
| GameReleaseVersion |
+--------------------+
| 19.6 |
| 19.5 |
+--------------------+
REGEXP पैटर्न व्याख्या
| पैटर्न | अर्थ |
|---|---|
| ^ | स्ट्रिंग की शुरुआत |
| 19 | शाब्दिक '19' |
| \\. | शाब्दिक डॉट (एस्केप किया गया) |
| [0-9]+ | एक या अधिक अंक |
| $ | स्ट्रिंग का अंत |
अन्य उपयोगी पैटर्न
'^[0-9]+\\.[0-9]+\\.[0-9]+$'- सेमेंटिक वर्जनिंग (1.2.3)'^[0-9]+(\\.[0-9]+)*$'- एक या अधिक डॉट-अंक समूह'^v?[0-9]+\\.[0-9]+$'- वैकल्पिक 'v' प्रीफिक्स के साथ
नोट: MySQL 8.0+ में REGEXP_LIKE() फ़ंक्शन भी उपलब्ध है।