2009-04-17 10 views

उत्तर

96

वे वही हैं। संख्यात्मक रूप से दशमलव के बराबर है।

MSDN: decimal and numeric

+3

कार्यात्मक समकक्ष समानता के समान नहीं है। असल में, एमएस 6232 ए कोर्स के प्रशिक्षक की स्लाइड में एक टिप्पणी है कि वे एक ही हैं। साथ ही, माइक्रोसॉफ्ट द्वारा एक या दूसरे के बारे में कोई सिफारिश नहीं की जाती है (हालांकि डेसिमल अधिक समझ में आता है, क्योंकि यह सिबबेस से विरासत डेटाटाइप की बजाय एक मानक डेटाटाइप है)। अभी भी सोच रहा है कि वास्तविक अंतर (स्क्रीन के पीछे) क्या है :-)। – vstrien

+22

@vstrien: केवल एक ही अंतर जो मुझे मिल सकता है वह है कि SQL-92 मानक 'दशमलव' में * बिल्कुल * घोषित सटीक के रूप में सटीक है, जबकि 'संख्यात्मक' कम से कम * घोषित के रूप में सटीक है। SQL सर्वर में दोनों घोषित के रूप में सटीक सटीक हैं, यानी यह 'संख्यात्मक' के लिए लचीलापन का उपयोग नहीं करता है जो मानक अनुमति देता है। – Guffa

+14

नोट, हालांकि, SQL सर्वर उन्हें अदला-बदली के रूप में नहीं मानता है: यदि, उदाहरण के लिए, आपके पास "DECIMAL (18,0)" प्रारूप में "पैरेंट" कॉलम है, और आप ** विदेशी कुंजी ** जोड़ने का प्रयास करते हैं इसके लिए "NUMERIC (18,0)" प्रारूप में एक कॉलम का संदर्भ देता है, आपको 'कॉलम' <संदर्भित कॉलम> त्रुटि ''' के संदर्भ में एक ही डेटा प्रकार नहीं है। 'विदेशी कुंजी में' '' उन्हें दोनों NUMERIC (x, y) होना चाहिए, या दोनों DECIMAL (x, y) होना चाहिए। –

10

मेरी जानकारी के लिए वहाँ NUMERIC और दशमलव डेटा प्रकार के बीच कोई अंतर नहीं है। वे एक-दूसरे के समानार्थी हैं और किसी का भी इस्तेमाल किया जा सकता है। डेसिमल और NUMERIC डेटा प्रकार निश्चित सटीक और स्केल के साथ संख्यात्मक डेटा प्रकार हैं।

संपादित करें:

कुछ सहकर्मियों से बात करते हुए शायद इसका दशमलव ANSI SQL मानक किया जा रहा है और संख्यात्मक एक माइक्रोसॉफ्ट जा रहा है के साथ कुछ के रूप में अपनी और अधिक सामान्यतः प्रोग्रामिंग भाषाओं में पाया पसंद है। ... हो सकता है कि;)

+0

संपादन दोबारा करें: नहीं - ऊपर @ JoakimBackman का उत्तर देखें - वह NUMERIC और DECIMAL दोनों के साथ SQL मानक उद्धृत करता है। – DaveBoltman

37

यह वही है तो SQL2003 मानक (§6.1 डेटा प्रकार) के बारे में कहते हैं दो:

<exact numeric type> ::= 
    NUMERIC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ] 
    | DECIMAL [ <left paren> <precision> [ <comma> <scale> ] <right paren> ] 
    | DEC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ] 
    | SMALLINT 
    | INTEGER 
    | INT 
    | BIGINT 

... 

21) NUMERIC specifies the data type 
    exact numeric, with the decimal 
    precision and scale specified by the 
    <precision> and <scale>. 

22) DECIMAL specifies the data type 
    exact numeric, with the decimal scale 
    specified by the <scale> and the 
    implementation-defined decimal 
    precision equal to or greater than the 
    value of the specified <precision>. 
+0

क्या आपके पास इसके लिए लिंक है? – gbn

+2

विस्कॉर्प में डाउनलोड के लिए मानक का एक मसौदा संस्करण है (http://www.wiscorp.com/sql_2003_standard.zip), यदि आप चाहते हैं कि अंतिम संस्करण आपको इसे खरीदना है (http://en.wikipedia.org/wiki/SQL2003 # Documentation_availability)। –

+6

ध्यान दें कि यह SQL मानक है, यह नहीं कि SQL सर्वर इसे कैसे लागू करता है इसका विवरण नहीं है। – Guffa

0

वे अर्थ समान है, all.Decimal और संख्यात्मक डेटा प्रकार में कोई अंतर सांख्यिक हैं निश्चित परिशुद्धता और पैमाने के साथ डेटा प्रकार।

-- Initialize a variable, give it a data type and an initial value 

declare @myvar as decimal(18,8) or numeric(18,8)----- 9 bytes needed 

-- Increse that the vaue by 1 

set @myvar = 123456.7 

--Retrieve that value 

select @myvar as myVariable 
0

जोकिम बैकमैन का जवाब विशिष्ट है, लेकिन इससे अतिरिक्त स्पष्टता आ सकती है।

मामूली अंतर है। एसक्यूएल फॉर डमीज के अनुसार, 8 वां संस्करण (2013):

DECIMAL डेटा प्रकार NUMERIC के समान है। ... अंतर है कि आपका कार्यान्वयन आपके द्वारा निर्दिष्ट से अधिक सटीकता निर्दिष्ट कर सकता है - यदि ऐसा है, तो कार्यान्वयन अधिक सटीकता का उपयोग करता है। यदि आप सटीक या स्केल निर्दिष्ट नहीं करते हैं, तो कार्यान्वयन डिफ़ॉल्ट मानों का उपयोग करता है, क्योंकि यह NUMERIC प्रकार के साथ करता है।

ऐसा लगता है कि एसक्यूएल के कुछ कार्यान्वयन पर अंतर डेटा अखंडता में है। DECIMAL कुछ सिस्टम डिफ़ॉल्ट पर आधारित परिभाषा से अतिप्रवाह की अनुमति देता है, जहां NUMERIC नहीं है।

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