Есть ли разница между типами данных DECIMAL и NUMERIC в SQL Server?Есть ли разница между DECIMAL и NUMERIC в SQL Server?
Когда следует использовать DECIMAL и NUMERIC?
Есть ли разница между типами данных DECIMAL и NUMERIC в SQL Server?Есть ли разница между DECIMAL и NUMERIC в SQL Server?
Когда следует использовать DECIMAL и NUMERIC?
Они одинаковы. Числовое функционально эквивалентно десятичному.
MSDN: decimal and numeric
Насколько мне известно, нет никакой разницы между числовыми и DECIMAL типов данных. Они являются синонимами друг друга, и каждый может быть использован. Типы DECIMAL и NUMERIC - это числовые типы данных с фиксированной точностью и масштабированием.
Edit:
Говоря несколько коллег, может быть, его что-то делать с DECIMAL является стандартом ANSI SQL и NUMERIC быть один Mircosoft предпочитает, как его чаще встречаются в языках программирования. ... Может быть;)
Редактирование: Нет - см. Ответ @ JoakimBackman выше - он цитирует стандарт SQL как с NUMERIC, так и с DECIMAL. – DaveBoltman
Это то, что тогда стандарт 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>.
У вас есть ссылка для этого, пожалуйста? – gbn
Wiscorp имеет черновик версии стандарта для скачивания (http://www.wiscorp.com/sql_2003_standard.zip), если вы хотите, чтобы окончательная версия вам была куплена (http://en.wikipedia.org/wiki/SQL2003 # Documentation_availability). –
Обратите внимание, что это стандарт SQL, а не описание того, как SQL Server его реализует. – Guffa
Они являются синонимами, никакой разницы в all.Decimal и числовых типов данных не являются числовыми типы данных с фиксированной точностью и масштабированием.
-- 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
Ответ Жоакима Бэкмана специфичен, но это может принести ему дополнительную ясность.
Существует незначительная разница. В соответствии с SQL For Dummies, 8-е издание (2013):
Тип данных DECIMAL аналогичен NUMERIC. ... Разница в заключается в том, что ваша реализация может указать точность, превышающую то, что вы задаете - если это так, реализация использует большую точность. Если вы не указываете точность или масштаб, реализация использует значения по умолчанию , как и для типа NUMERIC.
кажется, что разница в некоторых реализаций SQL находится в целостности данных. DECIMAL позволяет переполнять из того, что определено на основе некоторых системных значений по умолчанию, где NUMERIC нет.
Функциональная эквивалентность не совпадает с равенством. Фактически, в слайдах инструктора курса MS6232A есть комментарий, добавленный, что они ПОЛНОСТЬЮ то же самое. В то же время Microsoft не рекомендует делать какие-либо рекомендации относительно того или иного (однако DECIMAL имеет больше смысла, поскольку это тип данных стандарта вместо устаревшего типа данных из Sybase). Все еще интересно, какая реальная разница (за экранами) :-). – vstrien
@vstrien: Единственное отличие, которое я могу найти, это то, что в стандарте 'decimal' SQL-92 точно указано * точно так же, как указано, а' numeric' - * как минимум * так же точно, как указано. В SQL Server оба точно такие же точные, как и объявленные, т. Е. Он не использует гибкость для «числовых», что позволяет стандарт. – Guffa
Учтите, однако, что SQL Server не рассматривает их как взаимозаменяемые: если, например, у вас есть «родительский» столбец в формате «DECIMAL (18,0)», и вы пытаетесь добавить ** внешний ключ ** для него, который ссылается на столбец в формате «NUMERIC (18,0)», вы получите сообщение об ошибке «Column» '- это не тот же тип данных, что и ссылочный столбец' . 'in foreign key' '. Они оба должны быть NUMERIC (x, y), или оба должны быть DECIMAL (x, y). –