Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

यह पता लगाने के 3 तरीके कि क्या कोई स्ट्रिंग MySQL में रेगुलर एक्सप्रेशन से मेल खाती है

MySQL में कई फ़ंक्शन और ऑपरेटर हैं जो हमें रेगुलर एक्सप्रेशन (regex) का उपयोग करके संचालन करने की अनुमति देते हैं। यह आलेख दो ऑपरेटरों और एक फ़ंक्शन को प्रस्तुत करता है जो हमें यह पता लगाने में सक्षम बनाता है कि क्या कोई स्ट्रिंग किसी दिए गए पैटर्न द्वारा निर्दिष्ट रेगुलर एक्सप्रेशन से मेल खाती है।

ये रेगेक्स फ़ंक्शन और ऑपरेटर हैं:

  • REGEXP_LIKE()
  • REGEXP
  • RLIKE

ये सभी मूल रूप से समकक्ष हैं, क्योंकि ऑपरेटर (दूसरे दो) दोनों फ़ंक्शन के समानार्थक शब्द हैं (पहला वाला)। किसी भी स्थिति में, आप नीचे कार्रवाई में तीनों के उदाहरण देख सकते हैं।

REGEXP_LIKE() समारोह

सबसे पहले, आइए फ़ंक्शन को देखें। यहां REGEXP_LIKE() . का उपयोग करके रेगेक्स खोज चलाने का एक उदाहरण दिया गया है समारोह:

SELECT 
  REGEXP_LIKE('Car', '^C') AS 'Match',
  REGEXP_LIKE('Bar', '^C') AS 'No Match';

परिणाम:

+-------+----------+
| Match | No Match |
+-------+----------+
|     1 |        0 |
+-------+----------+

पहली स्ट्रिंग मेल खाती है (क्योंकि यह C . से शुरू होती है ) तो परिणाम 1 . है . दूसरी स्ट्रिंग मेल नहीं खाती और इसलिए परिणाम 0 . है ।

हालांकि, यह फ़ंक्शन केवल 1 . को वापस करने से कहीं अधिक उपयोगी हो सकता है या 0 . उदाहरण के लिए, इसे WHERE . में जोड़ा जा सकता है डेटाबेस को क्वेरी करते समय क्लॉज। इस मामले में, हम उन पंक्तियों की सूची प्राप्त कर सकते हैं जिनमें पैटर्न के लिए एक मैच होता है।

यहां एक उदाहरण दिया गया है:

SELECT AlbumId, AlbumName
FROM Albums
WHERE REGEXP_LIKE(AlbumName, '^Power');

परिणाम:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

ये रही पूरी तालिका:

SELECT AlbumId, AlbumName
FROM Albums;

परिणाम:

+---------+--------------------------+
| AlbumId | AlbumName                |
+---------+--------------------------+
|       1 | Powerslave               |
|       2 | Powerage                 |
|       3 | Singing Down the Lane    |
|       4 | Ziltoid the Omniscient   |
|       5 | Casualties of Cool       |
|       6 | Epicloud                 |
|       7 | Somewhere in Time        |
|       8 | Piece of Mind            |
|       9 | Killers                  |
|      10 | No Prayer for the Dying  |
|      11 | No Sound Without Silence |
|      12 | Big Swing Face           |
|      13 | Blue Night               |
|      14 | Eternity                 |
|      15 | Scandinavia              |
|      16 | Long Lost Suitcase       |
|      17 | Praise and Blame         |
|      18 | Along Came Jones         |
|      19 | All Night Wrong          |
|      20 | The Sixteen Men of Tain  |
+---------+--------------------------+

REGEXP संचालिका

REGEXP . का उपयोग करके समान कार्य करने का तरीका यहां बताया गया है ऑपरेटर:

SELECT 
  'Car' REGEXP '^C' AS 'Match',
  'Bar' REGEXP '^C' AS 'No Match';

परिणाम:

+-------+----------+
| Match | No Match |
+-------+----------+
|     1 |        0 |
+-------+----------+

और डेटाबेस उदाहरण:

SELECT AlbumId, AlbumName
FROM Albums
WHERE AlbumName REGEXP '^Power';

परिणाम:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

आप NOT REGEXP . का भी उपयोग कर सकते हैं विपरीत परिणाम लौटाने के लिए।

RLIKE संचालिका

और यहाँ यह RLIKE . का उपयोग कर रहा है :

SELECT 
  'Car' RLIKE '^C' AS 'Match',
  'Bar' RLIKE '^C' AS 'No Match';

परिणाम:

+-------+----------+
| Match | No Match |
+-------+----------+
|     1 |        0 |
+-------+----------+

और डेटाबेस उदाहरण:

SELECT AlbumId, AlbumName
FROM Albums
WHERE AlbumName RLIKE '^Power';

परिणाम:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

इस मामले में मैंने बस REGEXP . की अदला-बदली की RLIKE . के लिए और बाकी कोड को अकेला छोड़ दिया।

आप NOT RLIKE . का भी उपयोग कर सकते हैं विपरीत परिणाम लौटाने के लिए।

अधिक REGEX फ़ंक्शन

MySQL में कुछ अन्य रेगेक्स फ़ंक्शन और ऑपरेटर भी शामिल हैं। इनमें से तीन नीचे सूचीबद्ध हैं। तकनीकी रूप से, आप पहले दो का उपयोग "पता लगाने" के लिए भी कर सकते हैं कि क्या एक स्ट्रिंग एक रेगेक्स पैटर्न से मेल खाती है (जिस स्थिति में, शायद इस लेख का शीर्षक "5 तरीके से पता लगाना चाहिए कि क्या एक स्ट्रिंग MySQL में एक नियमित अभिव्यक्ति से मेल खाती है" के बजाय " 3 तरीके…”)।

वैसे भी, यहां तीन और रेगेक्स फ़ंक्शन हैं:

  • आप REGEXP_INSTR() का उपयोग कर सकते हैं रेगुलर एक्सप्रेशन पैटर्न से मेल खाने वाले सबस्ट्रिंग के शुरुआती इंडेक्स को वापस करने के लिए कार्य करता है।
  • REGEXP_SUBSTR() फ़ंक्शन वह सबस्ट्रिंग देता है जो दिए गए रेगुलर एक्सप्रेशन पैटर्न से मेल खाता है।
  • और REGEXP_REPLACE() फ़ंक्शन एक स्ट्रिंग के भीतर सबस्ट्रिंग की घटनाओं को प्रतिस्थापित करता है जो दिए गए रेगुलर एक्सप्रेशन पैटर्न से मेल खाता है।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CentOS 6 . पर MySQL कैसे स्थापित करें

  2. MySQLdb मॉड्यूल लोड करने में त्रुटि 'क्या आपने mysqlclient या MySQL-python स्थापित किया?'

  3. MySQL - नियंत्रित करें कि कौन सी पंक्ति समूह द्वारा लौटाई जाती है

  4. एक SQL क्वेरी के साथ एकाधिक गणना कैसे प्राप्त करें?

  5. MySQL रेडियंस () फ़ंक्शन - डिग्री से रेडियन में कनवर्ट करें