मुझे MySQL के DECIMAL का बहुत कुछ नहीं मिल रहा है। मुझे पंक्ति को 00.0001 से 99.9999 तक कहीं भी शामिल करने में सक्षम होने की आवश्यकता है। मैं इसे कैसे काम करने के लिए संरचना करूँगा?
मुझे MySQL के DECIMAL का बहुत कुछ नहीं मिल रहा है। मुझे पंक्ति को 00.0001 से 99.9999 तक कहीं भी शामिल करने में सक्षम होने की आवश्यकता है। मैं इसे कैसे काम करने के लिए संरचना करूँगा?
जवाबों:
DOUBLE कॉलम DECIMAL कॉलम के समान नहीं हैं, और यदि आप वित्तीय डेटा के लिए DOUBLE कॉलम का उपयोग करते हैं, तो आपको परेशानी होगी ।
DOUBLE वास्तव में FLOAT का केवल एक डबल सटीक (32 बिट के बजाय 64 बिट) संस्करण है । फ्लोटिंग पॉइंट नंबर वास्तविक संख्याओं के अनुमानित प्रतिनिधित्व हैं और वे सटीक नहीं हैं। वास्तव में, 0.01 जैसी सरल संख्याओं का FLOAT या DOUBLE प्रकारों में सटीक प्रतिनिधित्व नहीं है।
DECIMAL कॉलम सटीक निरूपण हैं, लेकिन वे संभावित संख्याओं की एक छोटी श्रेणी के लिए बहुत अधिक स्थान लेते हैं। 0.0001 से 99.9999 तक मान रखने में सक्षम एक स्तंभ बनाने के लिए जैसे आपने पूछा कि आपको निम्नलिखित कथन की आवश्यकता होगी
CREATE TABLE your_table
(
your_column DECIMAL(6,4) NOT NULL
);
स्तंभ की परिभाषा प्रारूप DECIMAL (M, D) का अनुसरण करती है, जहाँ M अंकों की अधिकतम संख्या ( सटीक ) है और D दशमलव बिंदु के दाईं ओर अंकों की संख्या ( पैमाना ) है।
इसका मतलब है कि पिछली कमांड एक कॉलम बनाती है जो -99.9999 से 99.9999 तक के मूल्यों को स्वीकार करती है। आप 0.0000 से 99.9999 तक का एक UNSIGNED DECIMAL कॉलम भी बना सकते हैं।
MySQL DECIMAL की अधिक जानकारी के लिए आधिकारिक डॉक्स हमेशा एक बेहतरीन संसाधन होते हैं।
ध्यान रखें कि यह सभी जानकारी MySQL 5.0.3 और इससे अधिक के संस्करणों के लिए सही है। यदि आप पिछले संस्करणों का उपयोग कर रहे हैं, तो आपको वास्तव में अपग्रेड करना चाहिए।
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
:। यह नकारात्मक मानों के लिए एक आउट-ऑफ-रेंज त्रुटि लौटाएगा। आप इसी तरह अहस्ताक्षरित FLOAT और DOUBLE बना सकते हैं। मैनुअल: dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
यद्यपि ऊपर दिए गए उत्तर सही प्रतीत होते हैं, बस आपको यह कैसे काम करता है, इसका अंदाजा लगाने के लिए एक सरल व्याख्या।
मान लीजिए कि आपका कॉलम होना तय है DECIMAL(13,4)
। इसका अर्थ है कि कॉलम का कुल आकार 13 अंकों का होगा जहां इनमें से 4 का उपयोग सटीक प्रतिनिधित्व के लिए किया जाएगा।
तो, सारांश में, उस कॉलम के लिए आपके पास अधिकतम मूल्य होगा: 999999999.9999
टिप्पणियों में सही समाधान हैं, लेकिन उन्हें एक ही उत्तर में संक्षेप में प्रस्तुत करना है:
आपको DECIMAL (6,4) का उपयोग करना होगा।
तब आपके पास 6 कुल अंक हो सकते हैं, 2 पहले और 4 दशमलव बिंदु (स्केल) के बाद। के अनुसार कम से कम इस ।
दशमलव डेटाटाइप के लिए MySQL 5.x विनिर्देशन है DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
:। उपरोक्त उत्तर यह कहने में गलत है कि अहस्ताक्षरित दशमलव संभव नहीं है।
एक फ़ील्ड को केवल अहस्ताक्षरित दशमलवों को परिभाषित करने के लिए, जिसकी कुल लंबाई 6 अंकों की है, जिनमें से 4 दशमलव हैं, आप उपयोग करेंगे DECIMAL (6,4) UNSIGNED
:।
आप इसी तरह अहस्ताक्षरित बना सकते हैं (यानी नकारात्मक नहीं) FLOAT और दोहरा डेटा।