नल के लिए अनुमति देते हुए एक स्ट्रिंग को विभाजित करने के लिए इस विधि को बंद करना:
select regexp_substr('A~^B~^C~D^E','(.*?)(~\^|$)', 1, level, null, 1) from dual
connect by level < regexp_count('A~^B~^C~D^E','(.*?)(~\^|$)');
REGEXP_SUBS
-----------
A
B
C~D^E
जैसा कि लिंक किए गए उत्तर में यह किसी भी वर्ण की तलाश करता है, गैर लालची, उसके बाद ~^
के संयोजन के बाद (कैरेट के साथ बच निकला, इसलिए ~\^
) या अंतिम पंक्ति। regexp_substr()
कॉल subexpr
specify को निर्दिष्ट करने के लिए वैकल्पिक तर्कों का भी उपयोग करता है - इसलिए इसे केवल पहला समूह मिलता है (.*?
) और स्वयं परिसीमक नहीं, जो दूसरे समूह में है।
यदि आप एक विशिष्ट तत्व चाहते हैं तो वह लिंक की गई पोस्ट के और भी करीब है:
select regexp_substr('A~^B~^C~D^E','(.*?)(~\^|$)', 1, 3, null, 1) from dual;
REGEX
-----
C~D^E
या जैसा कि आप इसे एक प्रक्रिया में कर रहे हैं, एक संग्रह को पॉप्युलेट करने के लिए कनेक्ट-बाय क्वेरी का उपयोग करें, और यदि आप एक से अधिक को देख रहे हैं, तो आपको जिस तत्व की आवश्यकता है उसे चुनें।