2009-05-01 12 views
213

मैं SQL सर्वर में एक स्तंभ के दशमलव डेटा प्रकार को समझने का प्रयास कर रहा हूं। मुझे 15.5, 26.9, 24.7, 9.8, आदि जैसे मूल्यों को स्टोर करने में सक्षम होना चाहिएSQL सर्वर में दशमलव मानों को कैसे संग्रहीत करें?

मैंने कॉलम डेटा प्रकार में decimal(18, 0) असाइन किया लेकिन यह मुझे इन मानों को स्टोर करने की अनुमति नहीं दे रहा है।

ऐसा करने का सही तरीका क्या है?

उत्तर

421

DECIMAL(18,0) दशमलव बिंदु के बाद 0 अंक की अनुमति देगा।

कुछ ऐसा उपयोग करें जैसे DECIMAL(18,4) इसके बजाय बस ठीक करना चाहिए!

जो आपको कुल 18 अंकों देता है, जिनमें से 4 दशमलव बिंदु (और दशमलव बिंदु से पहले 14) के बाद।

DECIMAL(m,a) 

m कुल अंक अपने दशमलव हो सकता है की संख्या है:

+171

स्पष्टीकरण के लिए DECIMAL (18,4) दशमलव बिंदु से 14 अंक और दशमलव बिंदु के बाद 4 अंक है। – Powerlord

+19

दाएं - कुल 18 अंक, जिनमें से 4 दशमलव बिंदु के बाद - बिल्कुल सही। –

+0

भगवान का शुक्र है .. ठीक है शायद नहीं ... StackOverflow के लिए @ जेफ एटवुड धन्यवाद। एमएसडीएन के रिक्त स्थान भरना (हालांकि एमएसडीएन एक बिंदु तक बहुत अच्छा है) क्योंकि यह शुरुआत है! – Coops

93

आप का उपयोग करना चाहिए इस प्रकार है।

a दशमलव बिंदु के बाद आपके पास अधिकतम अंक हो सकता है।

http://www.tsqltutorials.com/datatypes.php में सभी डेटाटाइप के लिए विवरण हैं।

+8

उहम, 'a' दशमलव बिंदु_ के बाद _digits की अधिकतम संख्या है, दशमलव बिंदु_ की _max संख्या नहीं है (जिसमें से आप केवल एक ही हो सकते हैं)। –

+0

इसे आम तौर पर डेसिमल (पी, एस) के रूप में दर्शाया जाता है जहां पी परिशुद्धता (अधिकतम संख्या में अधिकतम अनुमत अंकों) के लिए खड़ा होता है और एस स्केल के लिए खड़ा होता है (दशमलव बिंदु के बाद अधिकतम अनुमत अंक)। – RBT

2

अन्य उत्तरों सही हैं। अपने उदाहरण मानते हुए आप जो संभावनाएं चाहते हैं उसकी पूर्ण सीमा को दर्शाता है DECIMAL(3, 1) है। या, DECIMAL(14, 1) कुल 14 अंकों की अनुमति देगा। क्या पर्याप्त है इसके बारे में सोचना आपका काम है।

38

Decimal के लिए सेटिंग्स इसकी सटीकता और स्केल या सामान्य भाषा में हैं, कितने अंक हो सकते हैं और दशमलव बिंदु के दाईं ओर आप कितने अंक प्राप्त करना चाहते हैं।

तो यदि आप PI को Decimal(18,0) में डालते हैं तो इसे 3 के रूप में रिकॉर्ड किया जाएगा?

यदि आप PI को Decimal(18,2) में डालते हैं तो इसे 3.14 के रूप में रिकॉर्ड किया जाएगा?

यदि आप PI को Decimal(18,10) में 3.1415926535 के रूप में दर्ज किया गया है।

6

MySQL डीबी decimal(4,2) में केवल कुल 4 अंक दर्ज करने की अनुमति देता है। जैसा कि आप decimal(4,2) में देखते हैं, इसका मतलब है कि आप कुल 4 अंक दर्ज कर सकते हैं जिनमें से दो अंक दशमलव बिंदु के बाद रखने के लिए हैं।

तो, यदि आप MySQL डेटाबेस में 100.0 दर्ज करते हैं, तो यह "कॉलम के लिए रेंज वैल्यू" जैसी त्रुटि दिखाएगा।

तो, आप केवल इस श्रेणी में प्रवेश कर सकते हैं: 00.00 से 99.99 तक।

+0

यह प्रासंगिक क्यों है जबकि प्रश्न स्पष्ट रूप से माइक्रोसॉफ्ट एसक्यूएल सर्वर निर्दिष्ट है? –

25

अधिकांश समय के लिए, मैं दशमलव (9,2) का उपयोग करता हूं जो एसक्यूएल दशमलव प्रकार में कम से कम भंडारण (5 बाइट्स) लेता है।


प्रेसिजन => संग्रहण बाइट्स

  • 1 - 9 => 5
  • 10-19 => 9
  • 20-28 => 13
  • 29-38 => 17

यह 0 से 9 99 99 999.99 (दशमलव बिंदु = कुल 9 अंकों के पीछे 7 अंक अवरक्त + 2 अंक) से स्टोर कर सकता है, जो कि अधिकांश मूल्यों के लिए काफी बड़ा है।

-1
request.input("name", sql.Decimal, 155.33)    // decimal(18, 0) 
request.input("name", sql.Decimal(10), 155.33)   // decimal(10, 0) 
request.input("name", sql.Decimal(10, 2), 155.33)  // decimal(10, 2) 
संबंधित मुद्दे