SQL Server中的DECIMAL和NUMERIC数据类型之间有什么区别吗?
我什么时候应该使用DECIMAL和NUMERIC?
答案 0 :(得分:101)
他们是一样的。数字在功能上等同于十进制。
MSDN:decimal and numeric
答案 1 :(得分:39)
这就是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>.
答案 2 :(得分:11)
据我所知,NUMERIC和DECIMAL数据类型没有区别。它们是彼此的同义词,任何一个都可以使用。 DECIMAL和NUMERIC数据类型是具有固定精度和比例的数字数据类型。
编辑:
对一些同事说,也许它与DECIMAL是ANSI SQL标准有关,而NUMERIC是Mircosoft更喜欢的编程语言中常见的。 ......也许;)
答案 3 :(得分:1)
Joakim Backman的答案是具体的,但这可能会带来更多的清晰度。
存在细微差别。根据SQL For Dummies,第8版(2013):
DECIMAL数据类型与NUMERIC类似。 ......区别在于 您的实现可能指定的精度大于您的精度 指定 - 如果是,则实现使用更高的精度。如果你 不指定精度或比例,实现使用默认值 值,与NUMERIC类型一样。
似乎SQL的某些实现的差异在于数据完整性。 DECIMAL允许根据某些系统默认值定义溢出,而NUMERIC则不允许溢出。
答案 4 :(得分:0)
它们是同义词,完全没有区别。十进制和数字数据类型是具有固定精度和比例的数字数据类型。
-- 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
答案 5 :(得分:-2)
它们完全相同。使用时要保持一致。在您的数据库中使用其中之一