विभिन्न डेटा प्रकारों के बीच एक स्ट्रिंग प्रारूप में डेटा परिवर्तित करना आमतौर पर Oracle में एक सीधी प्रक्रिया है, लेकिन कुछ मामले दूसरों की तुलना में थोड़ा अधिक चुनौतीपूर्ण होते हैं। इनमें से एक तब होता है जब आप क्लॉब को वर्चर 2 में बदलने के लिए ओरेकल का उपयोग करते हैं, जो कि मुश्किल है क्योंकि a varchar2 कॉलम में अधिकतम 4,000 वर्ण हैं, जबकि क्लोब बड़ी मात्रा में वर्ण संग्रहीत कर सकता है आंकड़े। आप अभी भी अपना लक्ष्य प्राप्त कर सकते हैं, हालांकि, dbms_lob सबस्ट्र विधि या to_char का उपयोग करके और अधिकतम आकार निर्दिष्ट करके।
CLOB और VARCHAR2 समझाया गया
CLOB (या "क्लोब" बोलचाल की भाषा में) "कैरेक्टर लार्ज ऑब्जेक्ट" के लिए एक संक्षिप्त रूप है और यह 4 जीबी तक डेटा स्टोर कर सकता है। इसका उपयोग कई डेटाबेस सिस्टम द्वारा किया जाता है, जिसमें DB2 और Oracle शामिल हैं। CLOB तब उपयोगी होता है जब आपको बड़ी मात्रा में डेटा स्टोर करने की आवश्यकता होती है, लेकिन आकार ही कुछ स्थितियों में समस्या पैदा कर सकता है। यही कारण है कि संचालन करने से पहले Oracle CLOB से अधिक प्रबंधनीय आकार के स्ट्रिंग प्रारूप में रूपांतरण अक्सर एक अच्छा तरीका होता है।
दिन का वीडियो
VARCHAR2 प्रारूप डेटा की छोटी मात्रा को संग्रहीत करता है, आमतौर पर 4,000 बाइट्स तक, जब तक कि आप एक विस्तारित अधिकतम स्ट्रिंग आकार का उपयोग नहीं करते हैं, इस स्थिति में यह 32,767 बाइट्स तक जा सकता है। एकल-बाइट वर्ण सेट के लिए, आप आमतौर पर एक कॉलम में 4,000 वर्ण तक प्राप्त कर सकते हैं। इन दो डेटा प्रारूपों के अधिकतम आकार के बीच विसंगति वह है जहां रूपांतरण के दौरान समस्याएं उत्पन्न होती हैं।
Dbms_lob सबस्ट्र विधि
क्लॉब स्ट्रिंग को varchar2 में बदलने के लिए, अपना SQL * Plus प्रोग्राम खोलें। आपके द्वारा किए जाने वाले रूपांतरण के लिए सिंटैक्स है:
तालिका से dbms_lob.substr (clob_column, for_how_many_bytes, from_who_byte) का चयन करें
यहां कोष्ठक में मान वे हैं जिन्हें आपको बदलना है, साथ ही अंत में "तालिका" भी है। ये कॉलम ("clob_column") और उस तालिका से मेल खाते हैं जिसके साथ आप काम कर रहे हैं। "for_how_many_bytes" आपको यह निर्दिष्ट करने का अवसर देता है कि आप कितने बाइट डेटा को कनवर्ट करना चाहते हैं, और "from_who_byte" आपको एक प्रारंभिक बिंदु निर्दिष्ट करने की अनुमति देता है।
इसलिए, यदि आपके पास "टैक्स" नामक एक टेबल है और "net_pay" नामक एक फ़ील्ड है और यह मानते हुए कि आप पहले से शुरू होने वाले 4,000 बाइट्स चाहते हैं, तो आप दर्ज करेंगे:
करों से dbms_lob.substr (net_pay, 4000, 1) चुनें
स्ट्रिंग को varchar2 फॉर्मेट में बदलने के लिए।
TO_CHAR विधि
आप समान लक्ष्य को प्राप्त करने के लिए समान सिंटैक्स के साथ TO_CHAR कमांड का भी उपयोग कर सकते हैं:
तालिका से TO_CHAR (SUBSTR (clob_column, 0,3999)) चुनें
यहां, शुरुआत और समाप्ति बाइट्स को 0 और 3999 के रूप में निर्दिष्ट किया गया है (एक 4,000 वर्ण स्ट्रिंग शुरू करने के लिए शुरुआत से), लेकिन "clob_column" और "table" फ़ील्ड बिल्कुल उसी तरह उपयोग किए जाते हैं जैसे इससे पहले। तो, उसी उदाहरण में, आप दर्ज कर सकते हैं:
करों से TO_CHAR(SUBSTR (net_pay, 0,3999)) चुनें
मूल रूप से, एक चरण में प्रक्रिया को पूरा करने के बजाय, यह बड़े स्ट्रिंग से एक सबस्ट्रिंग खींचने के लिए SUBSTR कमांड का उपयोग करता है, और फिर यह रूपांतरण को संभालने के लिए "to_char" का उपयोग करता है। यदि संबंधित क्लॉब कॉलम में 4,000 से कम बाइट्स की जानकारी है, तो आप सबस्ट्रिंग निर्दिष्ट करने के बजाय to_char के बाद कोष्ठक में कॉलम का नाम दर्ज कर सकते हैं।