स्तंभ मान शून्य नहीं था, यह भ्रष्ट था। संख्याओं के लिए उपयोग किया जाने वाला आंतरिक प्रतिनिधित्व है दस्तावेज़ीकरण में वर्णित , या कई अन्य स्थान इसे पसंद करें ।
पहला बाइट एक्सपोनेंट है, और यह - बस - शून्य हो सकता है, लेकिन इसके बाद केवल 3 के साथ नहीं। मुझे लगता है कि आप जो निकटतम प्राप्त कर सकते हैं वह है 0,3,102
-9.8*x10^125
तो आइए देखें कि अंतिम छोर पर कुछ कैसे संग्रहीत किए जाते हैं:
with t (n) as (
select 1 * power(10, -130) from dual
union all select 1 * power(10, 125) from dual
union all select -1 * power(10, -130) from dual
union all select -1 * power(10, 125) from dual
union all select -9.7 * power(10, 125) from dual
union all select -9.8 * power(10, 125) from dual
union all select -9.85 * power(10, 125) from dual
union all select -9.9 * power(10, 125) from dual
)
select n, dump(n) d1, dump(n, 1016) d2 from t
N D1 D2
----------- ------------------------------ ------------------------------
1.000E-130 Typ=2 Len=2: 128,2 Typ=2 Len=2: 80,2
1.000E+125 Typ=2 Len=2: 255,11 Typ=2 Len=2: ff,b
-1.000E-130 Typ=2 Len=3: 127,100,102 Typ=2 Len=3: 7f,64,66
-1.000E+125 Typ=2 Len=3: 0,91,102 Typ=2 Len=3: 0,5b,66
-9.700E+125 Typ=2 Len=3: 0,4,102 Typ=2 Len=3: 0,4,66
-9.800E+125 Typ=2 Len=3: 0,3,102 Typ=2 Len=3: 0,3,66
-9.850E+125 Typ=2 Len=4: 0,3,51,102 Typ=2 Len=4: 0,3,33,66
-9.900E+125 Typ=2 Len=3: 0,2,102 Typ=2 Len=3: 0,2,66
select 1 * power(10, 126) from dual;
ORA-01426: numeric overflow
आपका डंप किया गया मान 0,3
. है अंत में 102 नहीं है जो ऋणात्मक संख्या को दर्शाता है, लेकिन यदि यह सकारात्मक था तो पहली बाइट कम से कम 128 होगी।
ओसीआई कार्यक्रमों द्वारा उन्हें गलत तरीके से संचालित करने और यहां तक कि विरासत आयात द्वारा भी संख्याओं को दूषित करने के उदाहरण सामने आए हैं। यह जाने बिना कि मूल रूप से डेटा कैसे बनाया गया था, आप शायद कभी नहीं जान पाएंगे कि वास्तव में क्या गलत हुआ, या कब, या मूल रूप से मूल्य क्या होना चाहिए था।
यह अजीब है कि SQL डेवलपर परिणाम ग्रिड में शून्य दिखाता है (यदि आप एक स्क्रिप्ट के रूप में क्वेरी करते हैं तो यह निरस्त लगता है); एसक्यूएल * प्लस में यह कोई मूल्य नहीं दिखाता है, भले ही आप set null
एक निश्चित स्ट्रिंग के लिए। SQL डेवलपर, या JDBC ड्राइवर, आंतरिक प्रतिनिधित्व से कनवर्ट करने में असमर्थता को चुपचाप निगल सकता है।