Oracle दस्तावेज़ीकरण के अनुसार:
मैं इसे इस तरह देखता हूं:
- जब
Precision
स्केल से बड़ा है (जैसेNUMBER(8,5)
), कोई बात नहीं, यह सीधा है।Precision
इसका मतलब है कि संख्या में कुल 8 अंक होंगे, जिनमें से 5 भिन्नात्मक भाग (.→) में हैं, इसलिए पूर्णांक भाग (←.) में 3 अंक होंगे। यह आसान है। -
जब आप देखते हैं कि
Precision
Scale
. से छोटा है (जैसेNUMBER(2, 5)
), इसका मतलब 3 चीजें हैं:- संख्या का कोई पूर्णांक भाग नहीं होगा, केवल भिन्नात्मक भाग होगा। तो पूर्णांक भाग में 0 की गणना गणना में नहीं की जाती है, आप कहते हैं .12345 0.12345 नहीं। वास्तव में, यदि आप पूर्णांक भाग में केवल 1 अंक निर्दिष्ट करते हैं, तो यह हमेशा एक त्रुटि लौटाएगा।
Scale
भिन्नात्मक भाग में अंकों की कुल संख्या का प्रतिनिधित्व करता है जो संख्या होगी। इस मामले में 5. तो यह .12345 या .00098 हो सकता है लेकिन कुल मिलाकर 5 अंकों से अधिक नहीं हो सकता।- आंशिक भाग को 2 भागों में बांटा गया है, महत्वपूर्ण संख्याएं और शून्य। महत्वपूर्ण संख्याएं
Precision
. द्वारा निर्दिष्ट की जाती हैं , और शून्य की न्यूनतम संख्या बराबर होती है (Scale
-Precision
) उदाहरण :
यहाँ संख्या में भिन्नात्मक भाग में न्यूनतम 3 शून्य होना चाहिए। उसके बाद 2 महत्वपूर्ण संख्याएँ (शून्य भी हो सकती हैं)। तो 3 शून्य + 2 महत्वपूर्ण संख्याएं =5 जो कि
Scale
है नंबर।
संक्षेप में, जब आप उदाहरण के लिए देखते हैं NUMBER(6,9)
, यह हमें बताता है कि भिन्नात्मक भाग में कुल 9 अंक होंगे, जो अनिवार्य 3 शून्य से शुरू होगा और उसके बाद 6 अंक होंगे।
यहां कुछ उदाहरण दिए गए हैं:
SELECT CAST(.0000123 AS NUMBER(6,9)) FROM dual; -- prints: 0.0000123; .000|012300
SELECT CAST(.000012345 AS NUMBER(6,9)) FROM dual; -- prints: 0.0000123; .000|012345
SELECT CAST(.123456 AS NUMBER(3,4)) FROM dual; -- ERROR! must have a 1 zero (4-3=1)
SELECT CAST(.013579 AS NUMBER(3,4)) FROM dual; -- prints: 0.0136; max 4 digits, .013579 rounded to .0136