MySQL में, REGEXP_REPLACE()
फ़ंक्शन एक स्ट्रिंग के भीतर सबस्ट्रिंग की घटनाओं को प्रतिस्थापित करता है जो दिए गए रेगुलर एक्सप्रेशन पैटर्न से मेल खाता है।
प्रतिस्थापन के साथ पूरी स्ट्रिंग लौटा दी जाती है।
यदि कोई मेल नहीं है (यानी इनपुट स्ट्रिंग में सबस्ट्रिंग शामिल नहीं है), तो पूरी स्ट्रिंग अपरिवर्तित लौटा दी जाती है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
REGEXP_REPLACE(expr, pat, repl[, pos[, occurrence[, match_type]]])
जहां expr
इनपुट स्ट्रिंग है और pat
सबस्ट्रिंग के लिए नियमित अभिव्यक्ति पैटर्न है। repl
तर्क प्रतिस्थापन स्ट्रिंग है।
वैकल्पिक pos
तर्क आपको खोज शुरू करने के लिए स्ट्रिंग के भीतर एक स्थिति निर्दिष्ट करने की अनुमति देता है। यदि छोड़ा गया है, तो यह स्थिति 1 से शुरू होता है।
वैकल्पिक occurrence
तर्क आपको यह निर्दिष्ट करने की अनुमति देता है कि किस मैच की खोज करनी है। अगर छोड़ दिया जाता है, तो सभी घटनाएं बदल दी जाती हैं।
वैकल्पिक match_type
तर्क एक स्ट्रिंग है जो निर्दिष्ट करती है कि मिलान कैसे करें। यह आपको नियमित अभिव्यक्ति को परिष्कृत करने की अनुमति देता है। उदाहरण के लिए, आप इस तर्क का उपयोग केस-संवेदी मिलान निर्दिष्ट करने के लिए कर सकते हैं या नहीं।
उदाहरण 1 - मूल उपयोग
यहां एक बुनियादी उदाहरण दिया गया है:
SET @str = 'It was good'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'good', 'great!') 'Result';
परिणाम:
+-----------------+---------------+ | Original String | Result | +-----------------+---------------+ | It was good | It was great! | +-----------------+---------------+
इस मामले में एक मैच होता है, और स्ट्रिंग को संशोधन के साथ वापस कर दिया जाता है।
उदाहरण 2 - एकाधिक मिलान
डिफ़ॉल्ट रूप से, यदि स्ट्रिंग के भीतर कई मिलान हैं, तो उन सभी को बदल दिया जाता है:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cat', 'Tiger') 'Result';
परिणाम:
+---------------------+---------------------------+ | Original String | Result | +---------------------+---------------------------+ | Cat Dog Cat Dog Cat | Tiger Dog Tiger Dog Tiger | +---------------------+---------------------------+
हालांकि, आपके पास यह निर्दिष्ट करने का विकल्प भी है कि आप किस घटना को बदलना चाहते हैं (इस पर बाद में)।
उदाहरण 3 - कोई मिलान नहीं
यहां एक उदाहरण दिया गया है जहां कोई मेल नहीं है:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cow', 'Tiger') 'Result';
परिणाम:
+---------------------+---------------------+ | Original String | Result | +---------------------+---------------------+ | Cat Dog Cat Dog Cat | Cat Dog Cat Dog Cat | +---------------------+---------------------+
कोई मेल नहीं है, इसलिए स्ट्रिंग अपरिवर्तित है।
उदाहरण 4 - pos
तर्क
यहां प्रारंभिक स्थिति निर्दिष्ट करने का एक उदाहरण दिया गया है:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cat', 'Tiger', 2) 'Result';
परिणाम:
+---------------------+-------------------------+ | Original String | Result | +---------------------+-------------------------+ | Cat Dog Cat Dog Cat | Cat Dog Tiger Dog Tiger | +---------------------+-------------------------+
हमने स्थिति 2 पर शुरुआत की, जो पहली घटना के शुरू होने के बाद आती है, इसलिए प्रतिस्थापन कार्रवाई केवल उन घटनाओं को प्रभावित करती है जो पहली घटना के बाद आती हैं।
उदाहरण 5 - occurrence
तर्क
जैसा कि उल्लेख किया गया है, डिफ़ॉल्ट रूप से, सभी घटनाओं को बदल दिया जाता है। हालांकि, आपके पास occurrence
. का उपयोग करके प्रतिस्थापित करने के लिए एक विशिष्ट घटना निर्दिष्ट करने का विकल्प भी है बहस। यहां एक उदाहरण दिया गया है:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cat', 'Tiger', 1, 2) 'Result';
परिणाम:
+---------------------+-----------------------+ | Original String | Result | +---------------------+-----------------------+ | Cat Dog Cat Dog Cat | Cat Dog Tiger Dog Cat | +---------------------+-----------------------+
इस मामले में हम स्थिति 1 से शुरू करते हैं। हालांकि, अगर हम एक अलग स्थिति से शुरू करते हैं, तो परिणाम अलग होता है:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cat', 'Tiger', 2, 2) 'Result';
परिणाम:
+---------------------+-----------------------+ | Original String | Result | +---------------------+-----------------------+ | Cat Dog Cat Dog Cat | Cat Dog Cat Dog Tiger | +---------------------+-----------------------+
ऐसा इसलिए हुआ क्योंकि हमारी शुरुआती स्थिति पहली घटना शुरू होने के बाद आई थी। इसलिए, घटना 2 घटना 1 बन गई और घटना 3 घटना 2 बन गई।
घटना तर्क के लिए डिफ़ॉल्ट मान 0
है , जिसका अर्थ है कि सभी घटनाओं को बदल दिया जाता है। दूसरे शब्दों में, यदि आप इस तर्क को छोड़ देते हैं, तो सभी घटनाएँ बदल दी जाती हैं (जैसा कि हमने पिछले उदाहरणों में देखा है)। यहां सभी घटनाओं को स्पष्ट रूप से निर्दिष्ट करने का एक उदाहरण दिया गया है:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cat', 'Tiger', 1, 0) 'Result';
परिणाम:
+---------------------+---------------------------+ | Original String | Result | +---------------------+---------------------------+ | Cat Dog Cat Dog Cat | Tiger Dog Tiger Dog Tiger | +---------------------+---------------------------+
उदाहरण 6 - match_type
तर्क
आप मिलान प्रकार निर्धारित करने के लिए एक अतिरिक्त तर्क प्रदान कर सकते हैं। यह आपको यह निर्दिष्ट करने की अनुमति देता है कि मैच केस-संवेदी है या नहीं, लाइन टर्मिनेटर शामिल करना है या नहीं, आदि।
केस-संवेदी मिलान और केस-संवेदी मिलान निर्दिष्ट करने का एक उदाहरण यहां दिया गया है:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'cat', 'Tiger', 1, 0, 'c') 'Case-Sensitive', REGEXP_REPLACE(@str, 'cat', 'Tiger', 1, 0, 'i') 'Case-Insensitive';
परिणाम:
+---------------------+---------------------+---------------------------+ | Original String | Case-Sensitive | Case-Insensitive | +---------------------+---------------------+---------------------------+ | Cat Dog Cat Dog Cat | Cat Dog Cat Dog Cat | Tiger Dog Tiger Dog Tiger | +---------------------+---------------------+---------------------------+
match_type
तर्क में निम्नलिखित वर्ण हो सकते हैं:
c
- केस संवेदनशील मिलान।
i
- केस असंवेदनशील मिलान।
m
- बहु-पंक्ति मोड। स्ट्रिंग के भीतर लाइन टर्मिनेटर को पहचानें। डिफ़ॉल्ट व्यवहार केवल स्ट्रिंग एक्सप्रेशन के प्रारंभ और अंत में लाइन टर्मिनेटर का मिलान करना है।
n
.
चरित्र लाइन टर्मिनेटर से मेल खाता है। डिफ़ॉल्ट.
पंक्ति के अंत में रुकने के लिए मिलान।u
- यूनिक्स-ओनली लाइन एंडिंग्स। केवल न्यूलाइन कैरेक्टर को
.
,^
, और$
मैच ऑपरेटर।