खोज…


परिचय

एक नियमित अभिव्यक्ति एक जटिल खोज के लिए एक पैटर्न निर्दिष्ट करने का एक शक्तिशाली तरीका है।

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


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow