MySQL में, REGEXP_SUBSTR()
फ़ंक्शन वह सबस्ट्रिंग देता है जो दिए गए रेगुलर एक्सप्रेशन पैटर्न से मेल खाता है।
यदि कोई मेल नहीं है (अर्थात इनपुट स्ट्रिंग में सबस्ट्रिंग शामिल नहीं है), तो परिणाम NULL
है ।
सिंटैक्स
वाक्य रचना इस प्रकार है:
REGEXP_SUBSTR(expr, pat[, pos[, occurrence[, match_type]]])
जहां expr
इनपुट स्ट्रिंग है और pat
सबस्ट्रिंग के लिए नियमित अभिव्यक्ति पैटर्न है।
वैकल्पिक pos
तर्क आपको खोज शुरू करने के लिए स्ट्रिंग के भीतर एक स्थिति निर्दिष्ट करने की अनुमति देता है। यदि छोड़ा गया है, तो यह स्थिति 1 से शुरू होता है।
वैकल्पिक occurrence
तर्क आपको यह निर्दिष्ट करने की अनुमति देता है कि किस मैच की खोज करनी है। यदि छोड़ा गया है, तो पहली घटना का उपयोग किया जाता है (घटना 1)।
वैकल्पिक match_type
तर्क आपको नियमित अभिव्यक्ति को परिष्कृत करने की अनुमति देता है। उदाहरण के लिए, आप इस तर्क का उपयोग केस-संवेदी मिलान निर्दिष्ट करने के लिए कर सकते हैं या नहीं।
उदाहरण 1 - मूल उपयोग
यहां एक बुनियादी उदाहरण दिया गया है:
SELECT REGEXP_SUBSTR('Thailand or Cambodia', 'l.nd') Result;
परिणाम:
+--------+ | Result | +--------+ | land | +--------+
इस मामले में एक मैच होता है, और सबस्ट्रिंग वापस आ जाती है।
उदाहरण 2 - एकाधिक मिलान
डिफ़ॉल्ट रूप से, यदि स्ट्रिंग के भीतर कई मिलान हैं, तो पहला लौटा दिया जाता है (हालाँकि यदि आवश्यक हो तो आप एक और घटना निर्दिष्ट कर सकते हैं। हम जल्द ही उस पर पहुंचेंगे):
SELECT REGEXP_SUBSTR('Lend for land', 'l.nd') Result;
परिणाम:
+--------+ | Result | +--------+ | Lend | +--------+
उदाहरण 3 - कोई मिलान नहीं
यहां एक उदाहरण दिया गया है जहां कोई मेल नहीं है:
SELECT REGEXP_SUBSTR('Lend for land', '^C') Result;
परिणाम:
+--------+ | Result | +--------+ | NULL | +--------+
कोई मेल नहीं है, इसलिए परिणाम NULL
है .
उदाहरण 4 - pos
तर्क
आरंभिक स्थिति निर्दिष्ट करने का एक उदाहरण यहां दिया गया है:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) Result;
परिणाम:
+--------+ | Result | +--------+ | Cut | +--------+
हमने स्थिति 2 पर शुरू किया, जो पहली घटना के शुरू होने के बाद आता है, इसलिए इसके बजाय अगली घटना वापस कर दी जाती है।
यहां एक और उदाहरण दिया गया है:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1) 'Pos 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) 'Pos 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 6) 'Pos 6';
परिणाम:
+-------+-------+-------+ | Pos 1 | Pos 2 | Pos 6 | +-------+-------+-------+ | Cat | Cut | Cot | +-------+-------+-------+
उदाहरण 5 - occurrence
तर्क
यहां occurrence
का उपयोग करने का एक उदाहरण दिया गया है बहस। सभी मामलों में, हम स्थिति 1 से शुरू करते हैं:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 1) 'Occurrence 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 2) 'Occurrence 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 3) 'Occurrence 3';
परिणाम:
+--------------+--------------+--------------+ | Occurrence 1 | Occurrence 2 | Occurrence 3 | +--------------+--------------+--------------+ | Cat | Cut | Cot | +--------------+--------------+--------------+
हालांकि, अगर हम एक अलग स्थिति से शुरू करते हैं, तो परिणाम अलग होता है:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 1) 'Occurrence 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 2) 'Occurrence 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 3) 'Occurrence 3';
परिणाम:
+--------------+--------------+--------------+ | Occurrence 1 | Occurrence 2 | Occurrence 3 | +--------------+--------------+--------------+ | Cut | Cot | NULL | +--------------+--------------+--------------+
ऐसा इसलिए हुआ क्योंकि हमारी शुरुआती स्थिति पहली घटना शुरू होने के बाद आई थी। इसलिए, घटना 2 घटना 1 बन गई, और घटना 3 घटना 2 बन गई। और क्योंकि कोई और घटना नहीं थी, इसलिए घटना 3 का परिणाम NULL था (अर्थात कोई घटना नहीं थी 3)।
उदाहरण 6 - match_type
तर्क
आप मिलान प्रकार निर्धारित करने के लिए एक अतिरिक्त तर्क प्रदान कर सकते हैं। यह आपको यह निर्दिष्ट करने की अनुमति देता है कि मैच केस-संवेदी है या नहीं, लाइन टर्मिनेटर शामिल करना है या नहीं, आदि।
केस-संवेदी मिलान और केस-संवेदी मिलान निर्दिष्ट करने का एक उदाहरण यहां दिया गया है:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'c') 'Case-Sensitive', REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'i') 'Case-Insensitive';
परिणाम:
+----------------+------------------+ | Case-Sensitive | Case-Insensitive | +----------------+------------------+ | NULL | Cat | +----------------+------------------+
match_type
तर्क में निम्नलिखित वर्ण हो सकते हैं:
c
- केस संवेदनशील मिलान।
i
- केस असंवेदनशील मिलान।
m
- बहु-पंक्ति मोड। स्ट्रिंग के भीतर लाइन टर्मिनेटर को पहचानें। डिफ़ॉल्ट व्यवहार केवल स्ट्रिंग एक्सप्रेशन के प्रारंभ और अंत में लाइन टर्मिनेटर का मिलान करना है।
n
.
चरित्र लाइन टर्मिनेटर से मेल खाता है। डिफ़ॉल्ट.
पंक्ति के अंत में रुकने के लिए मिलान।u
- यूनिक्स-ओनली लाइन एंडिंग्स। केवल न्यूलाइन कैरेक्टर को
.
,^
, और$
मैच ऑपरेटर।