Есть ли разница между DECIMAL и NUMERIC в SQL Server?

Есть ли разница между DECIMAL и NUMERIC типами данных в SQL Server?

Когда следует использовать DECIMAL и NUMERIC?

Ответ 2

Это то, что тогда стандарт 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>.

Ответ 3

Насколько я знаю, нет никакой разницы между типами данных NUMERIC и DECIMAL. Они являются синонимами друг друга, и каждый может быть использован. Типы данных DECIMAL и NUMERIC представляют собой числовые типы данных с фиксированной точностью и масштабированием.

Edit:

Говоря о нескольких коллегах, возможно, это связано с тем, что DECIMAL является стандартом ANSI SQL, а NUMERIC - одним из Mircosoft, предпочитающим его чаще всего на языках программирования.... Может быть;)

Ответ 4

Это синонимы, без разницы. Типичные и числовые типы данных - это числовые типы данных с фиксированной точностью и масштабированием.

-- 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

Ответ Joakim Backman специфичен, но это может принести ему дополнительную ясность.

Есть незначительная разница. Согласно SQL For Dummies, 8-е издание (2013):

Тип данных DECIMAL аналогичен NUMERIC.... Разница что ваша реализация может указать точность, превышающую то, что вы укажите - если это так, реализация использует большую точность. если ты не указывайте точность или масштаб, реализация использует дефолт значения, как и для типа NUMERIC.

Похоже, что разница в некоторых реализациях SQL заключается в целостности данных. DECIMAL позволяет переполнять из того, что определено на основе некоторых системных значений по умолчанию, где в качестве NUMERIC нет.