MySQL में REGEXP ऑपरेटर का उपयोग करके नियमित अभिव्यक्ति (रैगुलर एक्सप्रेशन) पैटर्न मिलान किया जा सकता है। यह केवल संख्याओं और हाइफ़न के विशिष्ट पैटर्न (जैसे फोन नंबर) वाले रिकॉर्ड्स फ़िल्टर करने के लिए उपयोगी है।
सिंटैक्स
SELECT * FROM table_name WHERE column_name REGEXP 'pattern';
व्यावहारिक उदाहरण
1. टेबल बनाएं और मिश्रित डेटा डालें
mysql> CREATE TABLE DemoTable (Code VARCHAR(100));
Query OK, 0 rows affected (1.16 sec)
mysql> INSERT INTO DemoTable VALUES
('100-677-9876'),
('100-677-9876-John'),
('David-100-677-9876');
Query OK, 3 rows affected (0.15 sec)
2. सभी रिकॉर्ड्स देखें
mysql> SELECT * FROM DemoTable; +--------------------+ | Code | +--------------------+ | 100-677-9876 | | 100-677-9876-John | | David-100-677-9876 | +--------------------+ 3 rows in set (0.00 sec)
4. केवल XXX-XXX-XXXX पैटर्न वाले रिकॉर्ड्स प्राप्त करें
mysql> SELECT * FROM DemoTable
WHERE Code REGEXP '^\\(?[0-9]{3}\\)?[\\s-]?[0-9]{3}[\\s-]?[0-9]{4}$';
+--------------+
| Code |
+--------------+
| 100-677-9876 |
+--------------+
1 row in set (0.00 sec)
रैगुलर एक्सप्रेशन विश्लेषण
'^\\(?[0-9]{3}\\)?[\\s-]?[0-9]{3}[\\s-]?[0-9]{4}$'
^ $ -- स्ट्रिंग की शुरुआत और अंत (सटीक मिलान)
\\(? -- वैकल्पिक खुलता पैरेंथीसिस
[0-9]{3} -- ठीक 3 अंक
\\)? -- वैकल्पिक बंद पैरेंथीसिस
[\\s-]? -- वैकल्पिक स्पेस या हाइफ़न
[0-9]{3} -- ठीक 3 अंक
[\\s-]? -- वैकल्पिक स्पेस या हाइफ़न
[0-9]{4} -- ठीक 4 अंक
सरल पैटर्न विकल्प
| पैटर्न | मिलान | उदाहरण |
|---|---|---|
'^[0-9]{3}-[0-9]{3}-[0-9]{4}$' | सटीक XXX-XXX-XXXX | 100-677-9876 |
'^[0-9]{3}[- ]?[0-9]{3}[- ]?[0-9]{4}$' | स्पेस या हाइफ़न वैकल्पिक | 100 677 9876, 100-677-9876 |
'^[0-9-]{12}$' | केवल अंक और हाइफ़न, 12 वर्ण | 100-677-9876 |
'^[0-9]{10}$' | सिर्फ 10 अंक (कोई विभाजक नहीं) | 1006779876 |
MySQL REGEXP विशेषताएं
- केस-असंवेदनशील डिफ़ॉल्ट रूप से (MySQL 8.0 से पहले)
REGEXP BINARYकेस-संवेदनशील मिलान के लिएNOT REGEXPनकारात्मक मिलान के लिए- POSIX रैगुलर एक्सप्रेशन सिंटैक्स का उपयोग करता है
प्रदर्शन नोट
REGEXP इंडेक्स का उपयोग नहीं कर सकता (MySQL 8.0 में कुछ सुधार)। बड़े टेबल्स पर WHERE क्लॉज में उपयोग से बचें या पूर्ण-पाठ खोज/जनरेटेड कॉलम पर विचार करें।