MySQL
नियमित अभिव्यक्ति
खोज…
परिचय
एक नियमित अभिव्यक्ति एक जटिल खोज के लिए एक पैटर्न निर्दिष्ट करने का एक शक्तिशाली तरीका है।
REGEXP / RLIKE
REGEXP
(या इसका पर्यायवाची, RLIKE
) ऑपरेटर नियमित अभिव्यक्ति के आधार पर पैटर्न मिलान की अनुमति देता है।
निम्नलिखित employee
तालिका पर विचार करें:
+-------------+-------------+-------------+--------------+----------+
| EMPLOYEE_ID | FIRST_NAME | LAST_NAME | PHONE_NUMBER | SALARY |
+-------------+-------------+-------------+--------------+----------+
| 100 | Steven | King | 515.123.4567 | 24000.00 |
| 101 | Neena | Kochhar | 515.123.4568 | 17000.00 |
| 102 | Lex | De Haan | 515.123.4569 | 17000.00 |
| 103 | Alexander | Hunold | 590.423.4567 | 9000.00 |
| 104 | Bruce | Ernst | 590.423.4568 | 6000.00 |
| 105 | David | Austin | 590.423.4569 | 4800.00 |
| 106 | Valli | Pataballa | 590.423.4560 | 4800.00 |
| 107 | Diana | Lorentz | 590.423.5567 | 4200.00 |
| 108 | Nancy | Greenberg | 515.124.4569 | 12000.00 |
| 109 | Daniel | Faviet | 515.124.4169 | 9000.00 |
| 110 | John | Chen | 515.124.4269 | 8200.00 |
+-------------+-------------+-------------+--------------+----------+
पैटर्न ^
उन सभी कर्मचारियों का चयन करें जिनकी FIRST_NAME
N से शुरू होती है।
सवाल
SELECT * FROM employees WHERE FIRST_NAME REGEXP '^N'
-- Pattern start with----------------------------^
पैटर्न $ **
उन सभी कर्मचारियों का चयन करें जिनका PHONE_NUMBER
4569 के साथ समाप्त होता है।
सवाल
SELECT * FROM employees WHERE PHONE_NUMBER REGEXP '4569$'
-- Pattern end with----------------------------------^
REGEXP नहीं
उन सभी कर्मचारियों का चयन करें जिनका FIRST_NAME
N से शुरू नहीं होता है।
सवाल
SELECT * FROM employees WHERE FIRST_NAME NOT REGEXP '^N'
-- Pattern does not start with---------------^
रेगेक्स कंटेनर
उन सभी कर्मचारियों का चयन करें जिनके LAST_NAME
में शामिल है और जिनके FIRST_NAME
में a
।
सवाल
SELECT * FROM employees WHERE FIRST_NAME REGEXP 'a' AND LAST_NAME REGEXP 'in'
-- No ^ or $, pattern can be anywhere -------------------------------------^
[] के बीच कोई भी चरित्र
उन सभी कर्मचारियों का चयन करें जिनकी FIRST_NAME
A या B या C से शुरू होती है ।
सवाल
SELECT * FROM employees WHERE FIRST_NAME REGEXP '^[ABC]'
-------------------------------------------------^^---^
पैटर्न या |
उन सभी कर्मचारियों का चयन करें जिनकी FIRST_NAME
A या B या C से शुरू होती है और r , e , या i के साथ समाप्त होती है।
सवाल
SELECT * FROM employees WHERE FIRST_NAME REGEXP '^[ABC]|[rei]$'
-- ----------------------------------------------^^---^^^---^^
नियमित अभिव्यक्ति मिलान की गिनती
निम्नलिखित प्रश्न पर विचार करें:
SELECT FIRST_NAME, FIRST_NAME REGEXP '^N' as matching FROM employees
FIRST_NAME REGEXP '^N'
इस तथ्य के आधार पर 1 या 0 है कि FIRST_NAME
^N
मेल खाता है।
बेहतर कल्पना करने के लिए:
SELECT
FIRST_NAME,
IF(FIRST_NAME REGEXP '^N', 'matches ^N', 'does not match ^N') as matching
FROM employees
अंत में, कुल मिलान संख्या और गैर-मिलान पंक्तियों की गणना करें:
SELECT
IF(FIRST_NAME REGEXP '^N', 'matches ^N', 'does not match ^N') as matching,
COUNT(*)
FROM employees
GROUP BY matching