Oracle बहुत बहुत पुराना है।
वापस 80's . में जब इसे विकसित किया गया था (और इससे पहले कि कोई मानक थे) उन्हें लगा कि यह एक अच्छा विचार है, और तब रास्ता दिया गया Oracle अपने मूल्यों को संग्रहीत करता है, यह वास्तव में था।
यहां बताया गया है कि कैसे Oracle डेटा संग्रहीत करता है (दस्तावेज़ीकरण . से लिया गया) ):

डेटा के भीतर कोई डेटाटाइप संग्रहीत नहीं किया जाता है, केवल डेटा की लंबाई और डेटा ही।
अगर NULL मानों के साथ दो स्तंभों के बीच होता है, इसे एक बाइट के रूप में संग्रहीत किया जाता है जिसका अर्थ है कि स्तंभ की लंबाई 0 . है (वास्तव में, 0xFF ) अनुगामी NULL s बिल्कुल भी संग्रहीत नहीं होते हैं।
तो मूल्य को स्टोर करने के लिए 'test' , Oracle 5 बाइट्स स्टोर करने की जरूरत है:04 74 65 73 74 ।
हालांकि, एक खाली स्ट्रिंग और एक NULL . दोनों को स्टोर करने के लिए , Oracle बस डेटा की लंबाई को 0 . पर सेट करने की आवश्यकता है ।
बहुत स्मार्ट अगर आपका डेटा 20 Mb . पर स्टोर किया जाना है हार्ड ड्राइव जिसकी कीमत 5,000$ . है प्रत्येक।
बाद में, जब मानक सामने आए, तो यह अब इतना अच्छा विचार नहीं था, लेकिन उस समय तक NULL पर निर्भर बहुत सारे और बहुत सारे कोड पहले से ही मौजूद थे। और '' एक ही बात होना।
VARCHAR बनाना ऐसा भेद करने से टन टूट जाएगा कोड का।
इसे ठीक करने के लिए, उन्होंने VARCHAR . का नाम बदल दिया करने के लिए VARCHAR2 (जो कि किसी मानक का हिस्सा नहीं है), ने कहा कि VARCHAR2 कभी नहीं NULL . के बीच अंतर करना और एक खाली स्ट्रिंग और सभी से इसके बजाय इस डेटाटाइप का उपयोग करने का आग्रह किया।
अब वे शायद उस अंतिम व्यक्ति की प्रतीक्षा कर रहे हैं जिसने VARCHAR . का उपयोग किया था Oracle . में मरने के लिए डेटाबेस।