Yanıtlar:
Onlar aynı. Sayısal, işlevsel olarak ondalık sayıya eşittir.
MSDN: ondalık ve sayısal
decimal
olduğunu tam olarak ise, beyan kadar hassas numeric
olduğunu , en azından ilan olarak kesin olarak. SQL Server'da her ikisi de tam olarak belirtildiği kadar kesindir, yani numeric
standardın izin verdiği esnekliği kullanmaz .
Column '<referencedColumn>' is not the same data type as referencing column '<parentTable>.<parentColumn>' in foreign key '<yourKeyName>'
. İkisinin de NUMERIC (x, y) veya DECIMAL (x, y) olması gerekir.
decimal
bir en az ise, beyan edilen kesin olarak numeric
bir tam olarak ilan kesin olarak.
SQL2003 standardının (§6.1 Veri Türleri) ikisi hakkında söylediği şey budur:
<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>.
Bildiğim kadarıyla NUMERIC ve DECIMAL veri türleri arasında fark yok. Birbirleriyle eş anlamlıdırlar ve her ikisi de kullanılabilir. DECIMAL ve NUMERIC veri türleri, sabit hassasiyet ve ölçekle sayısal veri türleridir.
Düzenle:
Birkaç meslektaşımla konuşmak belki de DECIMAL'in ANSI SQL standardı olması ve NUMERIC'in Mircosoft'un programlama dillerinde daha yaygın olarak bulunduğu için tercih ettiği bir şey olmasıyla bir ilgisi olabilir. ...Olabilir ;)
Eşanlamlıdırlar, hiçbir farkları yoktur. Ondalık ve Sayısal veri türleri, sabit hassasiyet ve ölçekle sayısal veri türleridir.
-- 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
Joakim Backman'ın cevabı spesifiktir, ancak bu ona daha fazla netlik getirebilir.
Küçük bir fark var. SQL For Dummies, 8. Baskı (2013) uyarınca:
DECIMAL veri türü NUMERIC'e benzer. ... Aradaki fark, uygulamanızın belirttiğinizden daha büyük bir kesinlik belirtebilmesidir - eğer öyleyse, uygulama daha yüksek kesinliği kullanır. Kesinlik veya ölçek belirtmezseniz, uygulama, NUMERIC türünde olduğu gibi varsayılan değerleri kullanır.
Görünüşe göre SQL'in bazı uygulamalarındaki fark veri bütünlüğünde. DECIMAL, NUMERIC'in yapmadığı bazı sistem varsayılanlarına göre tanımlanandan taşmaya izin verir.