आप निश्चित रूप से मनमाने ढंग से सटीक प्रकार का उपयोग कर सकते हैं numeric
5 की सटीकता और 1 के पैमाने के साथ, जैसे @Simon ने टिप्पणी की, लेकिन सिंटैक्स त्रुटि के बिना। अल्पविराम का प्रयोग करें(,
) डॉट के बजाय (.
) प्रकार संशोधक में:
SELECT numeric(5,1) '-999.9' AS nr_lower
, numeric(5,1) '9999.9' AS nr_upper;
nr_lower | nr_upper
----------+----------
-999.9 | 9999.9
स्ट्रिंग लिटरल में माइनस साइन और डॉट की गिनती अधिकतम महत्वपूर्ण अंकों (precision
) में नहीं होती है। ).
यदि आपको लंबाई सीमित करने की आवश्यकता नहीं है, तो बस numeric
. का उपयोग करें .
यदि आपको न्यूनतम और अधिकतम लागू करने की आवश्यकता है, तो एक चेक बाधा जोड़ें:
CHECK (nr_column BETWEEN -999.9 AND 9999.9)
numeric
आपका नंबर स्टोर करता है बिल्कुल . यदि आपको पूर्ण सटीकता की आवश्यकता नहीं है और छोटी गोलाई त्रुटियां कोई समस्या नहीं हैं, तो आप फ़्लोटिंग पॉइंट प्रकारों में से एक का भी उपयोग कर सकते हैं double precision
(float8
) या real
(float4
)।
या, चूंकि आप केवल एक भिन्नात्मक दशमलव अंक की अनुमति देते हैं, आप 10 से गुणा कर सकते हैं और integer
का उपयोग कर सकते हैं , जो सबसे कुशल भंडारण होगा:4 बाइट्स, कोई गोलाई त्रुटि नहीं और सबसे तेज़ प्रसंस्करण। बस नंबर का ठीक से उपयोग और दस्तावेज करें।
मैनुअल में संख्यात्मक प्रकारों के लिए विवरण।