Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में REGEXP का उपयोग करके केवल हाइफ़न से अलग संख्याओं वाले पैटर्न मिलान करना

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-XXXX100-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 क्लॉज में उपयोग से बचें या पूर्ण-पाठ खोज/जनरेटेड कॉलम पर विचार करें।

  1. JavaScript रेगेक्स प्रोग्राम: नाम में केवल नंबर, अक्षर और अंडरस्कोर हों JavaScript रेगेक्स प्रोग्राम: नाम में केवल नंबर, अक्षर और अंडरस्कोर हों

    JavaScript में रेगेक्स का उपयोग करके नाम को केवल नंबर, अक्षर और अंडरस्कोर तक सीमित करने का कोड:उदाहरण<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0&quo

  1. - MySQL REGEXP: केवल स्ट्रिंग या स्ट्रिंग+नंबर वाले रिकॉर्ड दिखाएँ, केवल नंबर वाले नहीं

    REGEXP पैटर्न कम से कम एक अक्षर (a-z या A-Z) वाले रिकॉर्ड के लिए: select yourColumnName from yourTableName where yourColumnName REGEXP [a-zA-Z]; उदाहरण insert into demo41 values(John Smith34), (John Smith), (9234John Smith), (john smith), (98775); क्वेरी और परिणाम select name from demo41 where

  1. - C# में केवल नंबर्स के लिए Regex कैसे लिखें?

    एक रेगुलर एक्सप्रेशन एक पैटर्न है जिसे इनपुट टेक्स्ट के विरुद्ध मिलान किया जा सकता है। .Net फ्रेमवर्क एक रेगुलर एक्सप्रेशन इंजन प्रदान करता है जो ऐसा मिलान करने की अनुमति देता है। एक पैटर्न में एक या अधिक कैरेक्टर लिटरल, ऑपरेटर्स, या कंस्ट्रक्ट्स होते हैं। RegEx द्वारा उपयोग किए जाने वाले बुनियादी