Gibt es einen Unterschied zwischen Datentypen DECIMAL und NUMERIC in SQL Server?Gibt es einen Unterschied zwischen DECIMAL und NUMERIC in SQL Server?
Wann sollte ich DECIMAL und wann NUMERIC verwenden?
Gibt es einen Unterschied zwischen Datentypen DECIMAL und NUMERIC in SQL Server?Gibt es einen Unterschied zwischen DECIMAL und NUMERIC in SQL Server?
Wann sollte ich DECIMAL und wann NUMERIC verwenden?
Sie sind gleich. Numerisch ist funktional äquivalent zu dezimal.
MSDN: decimal and numeric
Meines Wissens gibt es keinen Unterschied zwischen NUMERIC und DECIMAL-Datentypen. Sie sind auch zueinander und beide können benutzt werden. Die Datentypen DECIMAL und NUMERIC sind numerische Datentypen mit fester Genauigkeit und Skalierung.
Edit:
auf wenige Kollegen Sprechen vielleicht hat seine etwas mit DECIMAL ist die ANSI SQL-Standard und NUMERIC ist eine Mircosoft als mehr bevorzugt zu tun, häufig in Programmiersprachen. ... Vielleicht;)
Re die Bearbeitung: Nein - siehe @ JoakimBackman's Antwort oben - er zitiert den SQL-Standard mit NUMERIC und DECIMAL. – DaveBoltman
Dies ist, was dann SQL2003-Standard (§ 6.1 Datentypen) sagt über die beiden:
<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>.
Sie haben hier einen Link? – gbn
Wiscorp hat eine Entwurfsversion des Standards zum Download (http://www.wiscorp.com/sql_2003_standard.zip), wenn Sie die finale Version wollen, müssen Sie es kaufen (http://en.wikipedia.org/wiki/SQL2003 # Dokumentation_Verfügbarkeit). –
Beachten Sie, dass dies der SQL-Standard ist, nicht eine Beschreibung der Implementierung durch SQL Server. – Guffa
Sie Synonyme sind, sind keine Unterschiede bei all.Decimal und Numerische Datentypen numerische Datentypen mit fester Genauigkeit und Skalierung.
-- 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
Die Antwort von Joakim Backman ist spezifisch, aber das kann zusätzliche Klarheit bringen.
Es gibt einen kleinen Unterschied. Laut SQL for Dummies, 8. Ausgabe (2013):
Der DECIMAL-Datentyp ähnelt NUMERIC. ... Der Unterschied ist , dass Ihre Implementierung eine höhere Genauigkeit angeben kann, als Sie angeben - wenn ja, verwendet die Implementierung die größere Genauigkeit. Wenn Sie keine Genauigkeit oder Skalierung angeben, verwendet die Implementierung die Standardwerte , wie beim Datentyp NUMERIC.
Es scheint, dass der Unterschied auf einige SQL-Implementierungen in der Datenintegrität ist. DECIMAL ermöglicht einen Überlauf von dem, was auf der Grundlage einiger Systemstandardwerte definiert ist, wobei NUMERIC dies nicht tut.
Funktionelle Äquivalenz ist nicht dasselbe wie Gleichheit. In den Folien des Tauchlehrers des Kurses MS6232A wurde hinzugefügt, dass sie fast identisch sind. Zur gleichen Zeit wird von Microsoft keine Empfehlung zu dem einen oder anderen gemacht (jedoch ist DECIMAL sinnvoller, da es sich um einen Standard-Datentyp anstelle eines älteren Datentyps aus Sybase handelt). Ich frage mich immer noch, was der wirkliche Unterschied (hinter den Bildschirmen) ist :-). – vstrien
@vstrien: Der einzige Unterschied, den ich finden kann, ist, dass in der SQL-92-Norm "dezimal" genau so genau ist wie deklariert, während "numerisch" mindestens so genau ist wie deklariert. In SQL Server sind beide genau so genau wie deklariert, d. H. Es wird nicht die Flexibilität für "numerisch" verwendet, die der Standard zulässt. – Guffa
Beachten Sie jedoch, dass SQL Server sie nicht als austauschbar behandelt: Wenn Sie beispielsweise eine "übergeordnete" Spalte im Format "DECIMAL (18,0)" haben und versuchen, einen ** Fremdschlüssel hinzuzufügen ** Wenn Sie auf eine Spalte im Format "NUMERIC (18,0)" verweisen, erhalten Sie den Fehler "Spalte" "ist nicht derselbe Datentyp wie die referenzierende Spalte" . 'im Fremdschlüssel' Sie müssen beide NUMERISCH sein (x, y) oder beide DECIMAL (x, y) sein. –