Есть ли разница между DECIMAL и NUMERIC типами данных в SQL Server?
Когда следует использовать DECIMAL и NUMERIC?
Есть ли разница между DECIMAL и NUMERIC типами данных в SQL Server?
Когда следует использовать DECIMAL и NUMERIC?
Они одинаковы. Числовое функционально эквивалентно десятичному.
MSDN: десятичная и цифровая
Это то, что тогда стандарт 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 представляют собой числовые типы данных с фиксированной точностью и масштабированием.
Edit:
Говоря о нескольких коллегах, возможно, это связано с тем, что 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
Ответ Joakim Backman специфичен, но это может принести ему дополнительную ясность.
Есть незначительная разница. Согласно SQL For Dummies, 8-е издание (2013):
Тип данных DECIMAL аналогичен NUMERIC.... Разница что ваша реализация может указать точность, превышающую то, что вы укажите - если это так, реализация использует большую точность. если ты не указывайте точность или масштаб, реализация использует дефолт значения, как и для типа NUMERIC.
Похоже, что разница в некоторых реализациях SQL заключается в целостности данных. DECIMAL позволяет переполнять из того, что определено на основе некоторых системных значений по умолчанию, где в качестве NUMERIC нет.