REGEXP_SUBSTR फ़ंक्शन का तीसरा पैरामीटर लक्ष्य स्ट्रिंग में स्थिति को इंगित करता है (de_desc
आपके उदाहरण में) जहां आप खोजना शुरू करना चाहते हैं। यह मानते हुए कि स्ट्रिंग के दिए गए हिस्से में एक मैच पाया जाता है, यह जो लौटाया जाता है उसे प्रभावित नहीं करता है।
Oracle 11g में, फ़ंक्शन के लिए छठा पैरामीटर है, जो मुझे लगता है कि आप उपयोग करने का प्रयास कर रहे हैं, जो उस कैप्चर समूह को इंगित करता है जिसे आप वापस करना चाहते हैं। उचित उपयोग का एक उदाहरण होगा:
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]', 1,1,NULL,1) from dual;
जहां अंतिम पैरामीटर 1
उस कैप्चर समूह की संख्या इंगित करें जिसे आप वापस करना चाहते हैं। यहां उस दस्तावेज़ का लिंक दिया गया है जो पैरामीटर का वर्णन करता है।
ऐसा लगता है कि 10g में यह विकल्प नहीं है, लेकिन आपके मामले में आप इसके साथ समान परिणाम प्राप्त कर सकते हैं:
select substr( match, 2, length(match)-2 ) from (
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]') match FROM dual
);
चूंकि आप जानते हैं कि एक मैच में शुरुआत और अंत में बिल्कुल एक अतिरिक्त वर्ण होगा। (वैकल्पिक रूप से, आप परिणाम के दोनों सिरों से कोष्ठक हटाने के लिए RTRIM और LTRIM का उपयोग कर सकते हैं।)