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

regex_substr . में क्लॉज द्वारा कनेक्ट करें

connected by . का "दुर्व्यवहार" (जैसा कि कॉलिन 'टी हार्ट ने कहा) यहाँ एक अच्छा उद्देश्य है:REGEXP_SUBSTR . का उपयोग करके आप 4 मैचों (23,34,45,56) में से केवल एक को निकाल सकते हैं:रेगेक्स [^,]+ स्ट्रिंग में किसी भी वर्ण अनुक्रम से मेल खाता है जिसमें अल्पविराम नहीं होता है।

अगर आप दौड़ने की कोशिश करेंगे:

SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+') as "token" 
FROM   DUAL

आपको मिलेगा 23

और अगर आप दौड़ने की कोशिश करेंगे:

SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,1) as "token"
FROM   DUAL

आपको 23 भी मिलेगा केवल इतना ही कि अब हम दो अतिरिक्त पैरामीटर . भी सेट करते हैं :स्थिति 1 में देखना शुरू करें (जो कि डिफ़ॉल्ट है), और पहली घटना को वापस करें।

अब चलते हैं:

SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,2) as "token"
FROM   DUAL

इस बार हमें मिलेगा 34 (दूसरी घटना) और 3 . का उपयोग करना चूंकि अंतिम पैरामीटर 45 लौटाएगा और इसी तरह।

पुनरावर्ती का उपयोग connected by level . के साथ सुनिश्चित करता है कि आपको सभी प्रासंगिक परिणाम प्राप्त होंगे (जरूरी नहीं कि मूल क्रम में ही!):

SELECT DISTINCT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) as "token"
FROM   DUAL
CONNECT BY REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) IS NOT NULL
order by 1

वापस आ जाएगा:

TOKEN
23
34
45
56

जिसमें न केवल सभी 4 परिणाम होते हैं, बल्कि परिणामसेट में इसे अलग-अलग पंक्तियों में विभाजित भी करते हैं!

अगर आप बेवकूफ करेंगे इसके साथ - यह आपको विषय के बारे में एक स्पष्ट दृष्टिकोण दे सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक कथन में अनुक्रम से कई NEXTVAL क्वेरी करें

  2. मैं यह SQLSyntaxErrorException क्यों प्राप्त करता हूं:ORA-00933:जब मैं इस JDBC क्वेरी को करने का प्रयास करता हूं तो SQL कमांड ठीक से समाप्त नहीं होता है?

  3. DLL "OraOps10.dll" लोड करने में असमर्थ

  4. Oracle डेटाबेस में एक अपवाद चर का उपयोग करके उपयोगकर्ता-परिभाषित अपवाद को कैसे घोषित करें?

  5. अगर बी गलत हो जाता है तो ए को वापस रोल करें। स्प्रिंग बूट, jdbctemplate