Есть ли разница между DECIMAL и NUMERIC в SQL Server?
есть ли разница между десятичными и числовыми типами данных в SQL Server?
когда я должен использовать DECIMAL и когда NUMERIC?
6 ответов
они одинаковы. Numeric функционально эквивалентен decimal.
MSDN: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>.
насколько мне известно, нет разницы между числовыми и десятичными типами данных. Они являются синонимами друг для друга, и любой из них может быть использован. Десятичные и числовые типы данных-это числовые типы данных с фиксированной точностью и масштабом.
Edit:
говоря с несколькими коллегами, возможно, это имеет какое-то отношение к DECIMAL, являющемуся стандартом ANSI SQL и числовым, который предпочитает Mircosoft, поскольку он чаще встречается в языках программирования. ...Может быть ;)
ответ Йоакима Бэкмана является конкретным, но это может принести дополнительную ясность.
есть небольшая разница. Согласно SQL для чайников, 8-е издание (2013):
тип данных DECIMAL похож на NUMERIC. ... Разница что ваша реализация может указать точность, большую, чем вы укажите-если это так, реализация использует большую точность. Если вы не указывайте точность или масштаб, реализация использует значение по умолчанию значения, как и в случае с числовым типом.
кажется, что разница в некоторые реализации SQL находятся в целостности данных. DECIMAL позволяет переполнять из того, что определено на основе некоторых системных значений по умолчанию, где AS NUMERIC нет.
они синонимы, никакой разницы.Десятичные и числовые типы данных-это числовые типы данных с фиксированной точностью и масштабом.
-- 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
Они точно такие же. Когда вы используете его, будьте последовательны. Используйте один из них в своей базе данных