जब अन्य DBMSs से Oracle के लिए आ रहा टेबल पलायन, मानक कार्यों में से एक है सब की जगह VARCHAR(n)
के साथ क्षेत्रों VARCHAR2(n)
क्षेत्रों (बशर्ते n <= 4000)।
ओरेकल इस डेटाटाइप को क्यों कहता है VARCHAR2
और VARCHAR
अन्य डीबीएमएस की तरह नहीं ?
जब अन्य DBMSs से Oracle के लिए आ रहा टेबल पलायन, मानक कार्यों में से एक है सब की जगह VARCHAR(n)
के साथ क्षेत्रों VARCHAR2(n)
क्षेत्रों (बशर्ते n <= 4000)।
ओरेकल इस डेटाटाइप को क्यों कहता है VARCHAR2
और VARCHAR
अन्य डीबीएमएस की तरह नहीं ?
जवाबों:
ऐसा लगता है कि ओरेकल के पास एक समय में VARCHAR2 की तुलना में VARCHAR को एक अलग परिभाषा देने की योजना थी । इसने ग्राहकों को यह बताया है और VARCHAR के उपयोग के खिलाफ सिफारिश की है । जो कुछ भी उनकी योजनाएं थीं, जैसे कि 11.2.0.2 VARCHAR VARCHAR2 के समान हैं । यहाँ SQL भाषा संदर्भ 11g रिलीज़ 2 क्या कहता है:
VARCHAR डेटा प्रकार का उपयोग न करें। इसके बजाय VARCHAR2 डेटा प्रकार का उपयोग करें। हालाँकि, VARCHAR डेटा प्रकार वर्तमान में VARCHAR2 का पर्याय है, VARCHAR डेटा प्रकार को अलग-अलग डेटा प्रकार के रूप में पुनर्परिभाषित करने के लिए निर्धारित किया जाता है, जिसका उपयोग भिन्न-भिन्न तुलनात्मक शब्दार्थों की तुलना में चर-लंबाई के वर्ण तार के लिए किया जाता है।
PL / SQL उपयोगकर्ता मार्गदर्शिका और संदर्भ 10g रिलीज़ 2 डालता है यह इस तरह से:
वर्तमान में, VARCHAR VARCHAR2 का पर्याय है। हालाँकि, पीएल / एसक्यूएल के भविष्य के रिलीज में, उभरते SQL मानकों को समायोजित करने के लिए, VARCHAR अलग तुलनात्मक शब्दार्थ के साथ एक अलग डेटाटाइप बन सकता है। VARCHAR के बजाय VARCHAR2 का उपयोग करना एक अच्छा विचार है।
डाटाबेस अवधारणाओं 10g रिलीज़ 2 दस्तावेज़ कहते हैं मजबूत संदर्भ में एक ही बात:
VARCHAR डेटाटाइप VARCHAR2 डेटाटाइप का पर्याय है। व्यवहार में संभावित परिवर्तनों से बचने के लिए, हमेशा चर-लंबाई वाले वर्ण तार को संग्रहीत करने के लिए VARCHAR2 डेटाटाइप का उपयोग करें।
ओरेकल 9.2 और 8.1.7 प्रलेखन अनिवार्य रूप से एक ही बात कहते हैं, भले ही ओरेकल लगातार VARCHAR के उपयोग को हतोत्साहित करता है , अब तक उन्होंने VARCHAR2 के साथ समानता को बदलने के लिए कुछ भी नहीं किया है ।
varchar
कि संस्करण 8 से पहले एक अलग लंबाई सीमा थी , लेकिन मैं इसे वापस करने के लिए कुछ भी सम्मानित नहीं पा सकता हूं और अब आश्चर्य होता है कि क्या यह सिर्फ एक मिथक है।
वर्तमान में, दोनों पर्यायवाची हैं।
VARCHAR एक ANSI मानक डेटा प्रकार है, लेकिन Oracle का VARCHAR डेटा प्रकार का कार्यान्वयन रिक्त स्ट्रिंग पर विचार करके ANSI मानक का उल्लंघन करता है (Oracle का कार्यान्वयन ANSI मानक से पहले)। जैसा कि लेह बताते हैं, ओरेकल ने कहा है कि भविष्य में डेटा के प्रकार में खाली स्ट्रिंग का इलाज कैसे किया जाता है, इस संबंध में शब्दार्थ बदल सकता है। यदि और जब ऐसा होता है, तो VARCHAR2 डेटा प्रकार के शब्दार्थ समान रहेंगे। VARCHAR2 डेटा प्रकार का उपयोग करना अधिक सुरक्षित है क्योंकि आपको यह चिंता करने की आवश्यकता नहीं है कि ओरेकल के कुछ भविष्य के संस्करण आपके कोड को तोड़ देंगे जिससे खाली तार अब NULL नहीं माने जाएंगे।
क्योंकि मूल SQL मानक में एक VARCHAR 255 वर्ण का था, और Oracle उन दिनों मानकों के अनुपालन पर कम से कम एक छुरा था।
varchar(max)
, बस एकCLOB