जवाबों:
वह एक जैसे है। न्यूमेरिकल कार्यात्मक रूप से दशमलव के बराबर है।
MSDN: दशमलव और संख्यात्मक
decimal
है वास्तव में , के रूप में घोषित रूप में सटीक है, जबकि numeric
है कम से कम के रूप में घोषित सटीक रूप में। SQL सर्वर में दोनों बिल्कुल सटीक घोषित किए गए हैं, अर्थात यह numeric
उस मानक के लिए लचीलेपन का उपयोग नहीं करता है ।
Column '<referencedColumn>' is not the same data type as referencing column '<parentTable>.<parentColumn>' in foreign key '<yourKeyName>'
। उन्हें NUMERIC (x, y), या दोनों
decimal
है कम से कम है, जबकि, के रूप में घोषित सटीक रूप numeric
है बिल्कुल के रूप में घोषित सटीक रूप में।
यह तब 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>.
मेरी जानकारी के लिए NUMERIC और DECIMAL डेटा प्रकारों में कोई अंतर नहीं है। वे एक दूसरे के पर्याय हैं और दोनों में से किसी एक का उपयोग किया जा सकता है। DECIMAL और NUMERIC डेटा प्रकार निश्चित सटीक और पैमाने के साथ संख्यात्मक डेटा प्रकार हैं।
संपादित करें:
कुछ आरोपों की बात करें तो शायद कुछ ऐसा है कि DECIMAL का ANSI SQL मानक है और NUMERIC एक Mircosoft पसंद किया जा रहा है क्योंकि इसकी प्रोग्रामिंग भाषाओं में अधिक पाया जाता है। ...शायद ;)
वे समानार्थक शब्द हैं, कोई अंतर नहीं है। निश्चित और संख्यात्मक डेटा प्रकार निश्चित परिशुद्धता और पैमाने के साथ संख्यात्मक डेटा प्रकार हैं।
-- 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
जोकिम बैकमैन का जवाब विशिष्ट है, लेकिन यह इसके लिए अतिरिक्त स्पष्टता ला सकता है।
मामूली अंतर है। डमियों के लिए एसक्यूएल के अनुसार, 8 वां संस्करण (2013):
DECIMAL डेटा प्रकार NUMERIC के समान है। ... अंतर यह है कि आपका कार्यान्वयन आपके द्वारा निर्दिष्ट की तुलना में अधिक सटीक निर्दिष्ट कर सकता है - यदि हां, तो कार्यान्वयन अधिक सटीक उपयोग करता है। यदि आप सटीक या स्केल निर्दिष्ट नहीं करते हैं, तो कार्यान्वयन डिफ़ॉल्ट मानों का उपयोग करता है, जैसा कि NUMERIC प्रकार के साथ होता है।
ऐसा लगता है कि एसक्यूएल के कुछ कार्यान्वयन पर अंतर डेटा अखंडता में है। DECIMAL कुछ सिस्टम डिफॉल्ट के आधार पर परिभाषित किया गया है, जहां NUMERIC नहीं करता है, से ओवरफ्लो की अनुमति देता है।