2011-01-10 11 views
12

जावा बिगडेसिमल को स्टोर करने के लिए मुझे क्या पोस्टग्रेएसक्यूएल कॉलम प्रकार का उपयोग करना चाहिए? जो एक मनमाना परिशुद्धता प्रकार (यह एक PostgreSQL विस्तार है) के रूप में कार्य कर सकते हैं शायद Numeric, -जावा BigDecimal स्टोर करने के लिए कौन से PostgreSQL कॉलम प्रकार का उपयोग किया जाना चाहिए?

उत्तर

12

PostgreSQL datatypes देखें।

... किसी भी सटीक या पैमाने के बिना एक स्तंभ है, जिसमें किसी भी सटीक और पैमाने के संख्यात्मक मान, संग्रहीत किया जा सकता परिशुद्धता पर कार्यान्वयन सीमा तक पैदा करता है।

मैं पूरी तरह यकीन है कि क्या "परिशुद्धता पर कार्यान्वयन सीमा नहीं है", हालांकि नहीं हूँ। कभी भी वास्तव में बड़ी संख्या की कोशिश नहीं की है। यदि सीमा तक पहुंच जाती है, तो text पर फ़ॉलबैक संभव है। लेकिन, मुझे संदेह है कि इससे पहले अन्य महत्वपूर्ण मुद्दे होंगे ;-) यदि आप कम स्टोर करना चाहते हैं, तो numeric पर एक परिशुद्धता और/या स्केल निर्दिष्ट करें।

SJR के रूप में संपादित करें ने कहा, प्रतिबंध 1000 दशमलव (समान लिंक से) परिशुद्धता के अंकों का होता है:

प्रकार संख्यात्मक परिशुद्धता के 1000 अंकों के साथ नंबर स्टोर कर सकते हैं [में वर्तमान कार्यान्वयन] और गणना पूरी तरह से करते हैं। यह विशेष रूप से अनिवार्य राशियों और अन्य मात्रा जहां शुद्धता आवश्यक है भंडारण के लिए सिफारिश की है ...

अधिक परिशुद्धता की जरूरत है - हाथ में एक बहुत बड़ा समस्या होने के बावजूद - फिर एक अंकीय कॉलम नहीं होगा उपयुक्त (खुद से)। लेकिन यह वास्तव में बहुत अधिक चरम "क्या होगा" और संभवतः सीमित भूमिका निभाता है।

+0

आप सही हैं, मेरा बुरा :) – sjr

+1

मैंने आपकी पोस्ट को दस्तावेज़ों के नवीनतम संस्करण में संपादित किया। 8.2 थोड़ा पुराना लगता है;) – DrColossos

+0

@DrColossos बहुत सराहना की। –

4

सामान्य SQL डेटा प्रकारों के लिए बस जावा मैपिंग का उपयोग करें। इस मामले में आप NUMERIC या DECIMAL का उपयोग कर सकते हैं।

+0

यह विशेष समर्थन के कारण PostgreSQL में काम करता है। हालांकि, एसक्यूएल स्वयं एक मनमाना सटीक संख्यात्मक प्रकार को परिभाषित नहीं करता है। SQL सर्वर अधिकतम परिशुद्धता में 38 अंक हैं। (उम्मीद है कि BigDecimal मान उस सीमा में होने की गारंटी है हालांकि :-) –

+0

प्रश्न PostgreSQL के बारे में है, SQL सर्वर के बारे में नहीं। NUMERIC और DECIMAL के पास PostgreSQL में कोई सीमा नहीं है: http://www.postgresql.org/docs/current/static/datatype-numeric.html –

+0

यहां तक ​​कि पोस्टग्रेएसक्यूएल, दस्तावेज़ीकरण के अनुसार, सटीकता के 1000 अंकों की ऊपरी सीमा है। मुझे इस बड़े के पास कहीं भी संख्याओं का उपयोग नहीं करना पड़ा है, इसलिए मैं अन्यथा टिप्पणी नहीं कर सकता। (जावा की बिगडिसीमल में * * * बड़ी सीमा है।) बिंदु यह है कि संख्यात्मक स्थान * छोटा * है और भले ही मुझे इससे अधिक होने का कोई व्यावहारिक कारण न हो, तथ्य को अनियमित नहीं छोड़ा जाना चाहिए। –

संबंधित मुद्दे