MySQL में REGEXP का उपयोग करके डॉट और संख्याओं वाले पैटर्न (जैसे संस्करण संख्या) से मेल खाने वाले रिकॉर्ड प्राप्त किए जा सकते हैं।
उदाहरण
तालिका बनाएं:
mysql> CREATE TABLE DemoTable (Version VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES ('1.0.0'), ('2.s6.9'), ('1.5.0');
डेटा
+---------+
| Version |
+---------+
| 1.0.0 |
| 2.s6.9 |
| 1.5.0 |
+---------+
क्वेरी: केवल संख्या और डॉट वाले संस्करण (कोई अक्षर नहीं)
mysql> SELECT * FROM DemoTable
->> WHERE Version REGEXP '^[0-9]+\\.[0-9]+(\\.[0-9]+)*$';
परिणाम
+---------+
| Version |
+---------+
| 1.0.0 |
| 1.5.0 |
+---------+
पैटर्न व्याख्या
| भाग | अर्थ |
|---|---|
| ^ | स्ट्रिंग शुरुआत |
| [0-9]+ | एक या अधिक अंक |
| \\. | शाब्दिक डॉट |
| (\\.[0-9]+)* | डॉट+अंक का समूह, शून्य या अधिक बार |
| $ | स्ट्रिंग अंत |
पैटर्न विविधताएं
'^[0-9]+\\.[0-9]+$'- ठीक एक डॉट (1.0)'^[0-9]+(\\.[0-9]+){2}$'- ठीक दो डॉट (1.0.0)'^[0-9]+(\\.[0-9]+)+$'- कम से कम एक डॉट'^v?[0-9]+\\.[0-9]+(\\.[0-9]+)?$'- वैकल्पिक 'v' प्रीफिक्स
REGEXP vs LIKE
| विशेषता | LIKE | REGEXP |
|---|---|---|
| पैटर्न शक्ति | सरल वाइल्डकार्ड | पूर्ण रेगुलर एक्सप्रेशन |
| डॉट मिलान | किसी भी वर्ण (वाइल्डकार्ड) | शाब्दिक डॉट (एस्केप के साथ) |
| प्रदर्शन | तेज़ (इंडेक्स उपयोग संभव) | धीमा (पूर्ण स्कैन) |
| केस संवेदनशीलता | कोलेशन पर निर्भर | डिफ़ॉल्ट केस-असंवेदनशील |