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

एक CLOB ऑब्जेक्ट का उपयोग करके कैसे विभाजित करें, और:Oracle में सीमांकक को कई रिकॉर्ड में विभाजित करें

यहाँ एक पुनरावर्ती फ़ैक्टर सबक्वेरी (Oracle 11.2 और ऊपर) का उपयोग करके एक समाधान दिया गया है:

(प्री> with inputs ( str ) as ( select to_clob('ABCDEF:PmId12345RmLn1VlId0,ABCDEF:PmId12345RmLn1VlId0,ABCDEF:PmId12345RmLn1VlId0,ABCDEF:PmId12345RmLn1VlId0,ABCDEF:PmId12345RmLn1VlId0') from dual ), prep ( s, n, token, st_pos, end_pos ) as ( select ',' || str || ',', -1, null, null, 1 from inputs union all select s, n+1, substr(s, st_pos, end_pos - st_pos), end_pos + 1, instr(s, ',', 1, n+3) from prep where end_pos != 0 ) select n as idx, token as column_name from prep where n > 0; IDX COLUMN_NAME ------ ---------------------------- 1 ABCDEF:PmId12345RmLn1VlId0 2 ABCDEF:PmId12345RmLn1VlId0 3 ABCDEF:PmId12345RmLn1VlId0 4 ABCDEF:PmId12345RmLn1VlId0 5 ABCDEF:PmId12345RmLn1VlId0

नोट :

आपने CLOB कहा था लेकिन आपके उदाहरण में आपने varchar2 स्ट्रिंग से निकाला है। मैंने to_clob() added जोड़ा यह देखने के लिए कि यह CLOB पर काम करता है या नहीं।

मैंने instr . का उपयोग किया है और substr , जैसा कि वे अक्सर (आमतौर पर?) अपने regexp . से बेहतर और बहुत बेहतर के बीच प्रदर्शन करते हैं समकक्ष।

मैंने इनपुट स्ट्रिंग के भीतर प्रत्येक सबस्ट्रिंग के "इंडेक्स" को सहेजा है; कुछ मामलों में इनपुट स्ट्रिंग में टोकन का क्रम महत्वपूर्ण है। (हालांकि आपके उदाहरण में नहीं, आपने एक ही टोकन को पांच बार दोहराया था।)

यदि आपको बेहतर प्रदर्शन की आवश्यकता है, खासकर यदि आपके सीएलओबी बहुत बड़े हैं, तो आप dbms_lob.substr का उपयोग करना बेहतर समझ सकते हैं। और dbms_lob.instr - देखें CLOB पर SUBSTR का प्रदर्शन , विशेष रूप से एलेक्स पूल का उत्तर, और दस्तावेज़ यहाँ:http ://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_lob.htm#BABEAJAD . नियमित substr बनाम सिंटैक्स अंतर पर ध्यान दें / instr



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. खाली परिणाम होने पर Oracle लगातार लौटता है

  2. Oracle क्लॉज के साथ टेबल का उपयोग करता है

  3. क्या Oracle के सरल कार्यों पर प्रशासन के लिए कठिन होने के दावे सही हैं? क्या इसके लिए गुणवत्तापूर्ण व्यवस्थापक ऐप्स नहीं हैं?

  4. Oracle में अलग-अलग कॉलम में varchar को विभाजित करें

  5. Oracle में CLOB और BLOB के बीच अंतर को समझने में मेरी सहायता करें