MySQL का REGEXP ऑपरेटर रेगुलर एक्सप्रेशन पैटर्न मिलान करके पंक्तियों को फ़िल्टर करता है, जो LIKE से अधिक शक्तिशाली है।
सिंटैक्स
SELECT * FROM टेबल_नाम WHERE कॉलम_नाम REGEXP 'पैटर्न';
उदाहरण: अंडरस्कोर के बाद अंक वाले कोड ढूंढें
1. टेबल बनाएं
mysql> CREATE TABLE DemoTable1573 (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentCode VARCHAR(20)
-> );
2. डेटा डालें
mysql> INSERT INTO DemoTable1573(StudentCode) VALUES('STU_774');
mysql> INSERT INTO DemoTable1573(StudentCode) VALUES('909_Sam');
mysql> INSERT INTO DemoTable1573(StudentCode) VALUES('3_Carol_455');
mysql> INSERT INTO DemoTable1573(StudentCode) VALUES('David_903');
3. पैटर्न: '_' के बाद अंक (\\d)
mysql> SELECT * FROM DemoTable1573
-> WHERE StudentCode REGEXP '_[0-9]';
4. परिणाम
+-----------+-------------+ | StudentId | StudentCode | +-----------+-------------+ | 2 | 909_Sam | | 3 | 3_Carol_455 | +-----------+-------------+
पैटर्न व्याख्या
_- शाब्दिक अंडरस्कोर[0-9]- कोई भी अंक (0-9)- मिलान: '909_Sam' (_S नहीं, लेकिन _ के बाद अंक नहीं... वास्तव में पैटर्न '_[0-9]' का अर्थ है अंडरस्कोर के तुरंत बाद अंक)
नोट: मूल उदाहरण में पैटर्न '\\land[0-9]' प्रतीत होता है जो टाइपो हो सकता है। सही पैटर्न '_[0-9]' है।
सामान्य REGEXP पैटर्न
| पैटर्न | अर्थ |
|---|---|
^abc | abc से शुरू |
abc$ | abc पर समाप्त |
[abc] | a, b, या c में से कोई |
[^abc] | a, b, c के अलावा कोई |
[0-9] | कोई अंक |
[a-z] | कोई छोटा अक्षर |
. | कोई भी एकल वर्ण |
* | शून्य या अधिक |
+ | एक या अधिक |
? | शून्य या एक |
MySQL 8.0+ उन्नत फ़ंक्शन
REGEXP_LIKE()- बूलियन परिणामREGEXP_SUBSTR()- मिला हुआ उपस्ट्रिंग निकालेंREGEXP_REPLACE()- पैटर्न बदलेंREGEXP_INSTR()- मिलान स्थिति ढूंढें
प्रदर्शन नोट
REGEXP इंडेक्स का उपयोग नहीं कर सकता (पूर्ण स्कैन)। बड़े टेबल पर सावधानी से उपयोग करें।