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

MySQL में REGEXP का उपयोग करके वैकल्पिक लाइन एंडिंग पैटर्न मिलान करना

MySQL में REGEXP का उपयोग करके ऐसे पैटर्न मिलान करना जहां एक संख्या के बाद वैकल्पिक रूप से अन्य अंक आ सकते हैं (लाइन एंड या गैर-अंक के बाद समाप्त), नकारात्मक लुकअहेड/लुकबिहाइंड पैटर्न का उपयोग करें।

समस्या

EMPLOYEE:100 से मिलान करना है लेकिन EMPLOYEE:100 23432 से नहीं (जहां 100 के तुरंत बाद अंक आते हैं)।

समाधान: नकारात्मक वर्ण वर्ग

SELECT * FROM table_name 
WHERE column REGEXP 'PATTERN([^0-9]|$)';

व्यावहारिक उदाहरण

1. टेबल बनाएं और डेटा डालें

mysql> CREATE TABLE DemoTable (EmployeeCode VARCHAR(100));
Query OK, 0 rows affected (0.56 sec)

mysql> INSERT INTO DemoTable VALUES 
('EMPLOYEE:100 John Smith'),
('EMPLOYEE:16537 Chris Brown'),
('EMPLOYEE:100 David Miller'),
('EMPLOYEE:100 23432 David Miller');
Query OK, 4 rows affected (0.15 sec)

2. सभी रिकॉर्ड्स देखें

mysql> SELECT * FROM DemoTable;
+---------------------------------+
| EmployeeCode                    |
+---------------------------------+
| EMPLOYEE:100 John Smith         |
| EMPLOYEE:16537 Chris Brown      |
| EMPLOYEE:100 David Miller       |
| EMPLOYEE:100 23432 David Miller |
+---------------------------------+
4 rows in set (0.00 sec)

3. पैटर्न मिलान: EMPLOYEE:100 के बाद गैर-अंक या अंत

mysql> SELECT * FROM DemoTable 
WHERE EmployeeCode REGEXP 'EMPLOYEE:100([^0-9]|$)';
+---------------------------------+
| EmployeeCode                    |
+---------------------------------+
| EMPLOYEE:100 John Smith         |
| EMPLOYEE:100 David Miller       |
| EMPLOYEE:100 23432 David Miller |  -- नोट: यह भी मिलता है!
+---------------------------------+
3 rows in set (0.00 sec)

पैटर्न व्याख्या

'EMPLOYEE:100([^0-9]|$)'
EMPLOYEE:100    -- शाब्दिक स्ट्रिंग मिलान
(               -- समूह शुरू
  [^0-9]        -- कोई भी गैर-अंक वर्ण (स्पेस, अक्षर, आदि)
  |             -- या
  $             -- स्ट्रिंग अंत
)               -- समूह अंत

महत्वपूर्ण अवलोकन

तीसरी पंक्ति EMPLOYEE:100 23432 David Miller **मिलती है** क्योंकि 100 के बाद स्पेस है (जो [^0-9] से मेल खाता है)। यदि आप 100 के बाद **कुछ भी नहीं** (या केवल गैर-अंक/गैर-स्पेस) चाहते हैं, तो पैटर्न समायोजित करें।

सख्त पैटर्न: 100 के बाद केवल स्पेस/अक्षर/अंत

-- 100 के बाद स्पेस फिर अक्षर या अंत
WHERE EmployeeCode REGEXP 'EMPLOYEE:100( [A-Za-z]|$)';

MySQL 8.0+ में लुकअराउंड (सीमित)

MySQL REGEXP पूर्ण PCRE लुकअराउंड ((?!...), (?) का समर्थन नहीं करता। विकल्प:

  • नकारात्मक वर्ण वर्ग [^...] उपयोग करें (ऊपर दिखाया गया)
  • एप्लिकेशन लेयर पर फिल्टर करें
  • जनरेटेड कॉलम में पार्स किया गया मान स्टोर करें

सामान्य REGEXP पैटर्न

पैटर्नमिलान
^abc$सटीक 'abc'
^abc'abc' से शुरू
abc$'abc' पर समाप्त
[0-9]कोई अंक
[^0-9]कोई गैर-अंक
abc|def'abc' या 'def'
(abc)+'abc' एक या अधिक बार
  1. Java का उपयोग करके MySQL टेबल में रिकॉर्ड डालें Java का उपयोग करके MySQL टेबल में रिकॉर्ड डालें

    JDBC Statement या PreparedStatement का उपयोग करके Java एप्लिकेशन से MySQL में रिकॉर्ड डालें। टेबल बनाना CREATE TABLE DemoTable( Id INT, Name VARCHAR(30), CountryName VARCHAR(30), Age INT ); Query OK, 0 rows affected (0.66 sec) Java कोड (Statement) 0) { System.out.

  1. - C# में StringBuilder में नई लाइन के साथ Append करें

    AppendLine() विधि सामग्री जोड़ती है और अंत में एक नई लाइन जोड़ती है। सबसे पहले, StringBuilder सेट करें: StringBuilder str = new StringBuilder(); AppendLine() का उपयोग करें: str.AppendLine(Accessories); str.AppendLine(); str.AppendLine(Electronics); निम्न पूरा कोड है: उदाहरण using System; using Sy

  1. - Java RegEx का उपयोग करके किसी विशेष स्ट्रिंग/लाइन के अंत से मिलान करना

    मेटा कैरेक्टर “$” किसी विशेष स्ट्रिंग के अंत से मिलान करता है यानी यह स्ट्रिंग के अंतिम कैरेक्टर से मिलान करता है। उदाहरण के लिए, एक्सप्रेशन “\\d$” अंक से समाप्त होने वाली स्ट्रिंग/लाइन से मिलान करता है। एक्सप्रेशन “[a-z]$” लोअरकेस वर्णमाला से समाप्त होने वाली स