Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

कैसे Oracle में नियमित अभिव्यक्ति से समूह निकालने के लिए?

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 का उपयोग कर सकते हैं।)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sqldeveloper त्रुटि संदेश:नेटवर्क एडेप्टर कनेक्शन त्रुटि स्थापित नहीं कर सका

  2. Oracle SQL डेवलपर - गिराई गई तालिका को कैसे पुनर्प्राप्त करें

  3. Oracle में जॉइन क्वेरी के साथ अपडेट करें

  4. Oracle - मैं किस TNS नाम फ़ाइल का उपयोग कर रहा हूँ?

  5. प्रदर्शन ट्यूनिंग भूलभुलैया