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
. में मरने के लिए डेटाबेस।