Oracle 12.1 से पहले, एक VARCHAR2
कॉलम डेटाबेस कैरेक्टर सेट में डेटा के 4000 बाइट्स को संग्रहीत करने तक सीमित है, भले ही इसे VARCHAR2(4000 CHAR)
घोषित किया गया हो। . चूंकि आपकी स्ट्रिंग के प्रत्येक वर्ण को UTF-8 वर्ण सेट में 2 बाइट संग्रहण की आवश्यकता होती है, आप कॉलम में 2000 से अधिक वर्णों को संग्रहीत करने में सक्षम नहीं होंगे। बेशक, वह संख्या बदल जाएगी यदि आपके कुछ पात्रों को वास्तव में केवल 1 बाइट संग्रहण की आवश्यकता है या यदि उनमें से कुछ को 2 बाइट से अधिक संग्रहण की आवश्यकता है। जब डेटाबेस कैरेक्टर सेट विंडोज-1252 होता है, तो आपके स्ट्रिंग के प्रत्येक कैरेक्टर को स्टोरेज के केवल एक बाइट की आवश्यकता होती है ताकि आप कॉलम में 4000 कैरेक्टर स्टोर कर सकें।
चूंकि आपके पास लंबे तार हैं, क्या कॉलम को CLOB
. के रूप में घोषित करना संभव होगा? के बजाय VARCHAR2
. के रूप में ? यह (प्रभावी रूप से) लंबाई सीमा को हटा देगा (CLOB
के आकार की एक सीमा है) यह ओरेकल संस्करण और ब्लॉक आकार पर निर्भर करता है लेकिन यह कम से कम कई जीबी रेंज में है)।
यदि आप Oracle 12.1 या बाद के संस्करण का उपयोग कर रहे हैं, तो max_string_size
पैरामीटर आपको एक के अधिकतम आकार को बढ़ाने की अनुमति देता है VARCHAR2
स्तंभ 4000 बाइट्स से 32767 बाइट्स तक
।