Y a-t-il une différence entre les nombres décimaux et numériques dans SQL Server?

y a-t-il une différence entre les types de données décimales et numériques dans SQL Server?

Quand dois-je utiliser décimal et quand numérique?

119
demandé sur a_horse_with_no_name 2009-04-17 11:38:19

6 réponses

Ils sont les mêmes. Numérique est fonctionnellement équivalent décimal.

MSDN: décimal et numérique

99
répondu Guffa 2016-08-23 08:14:17

c'est ce que dit alors la norme SQL2003 (§6.1 types de données) sur les deux:

 <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>.
39
répondu Joakim Backman 2009-04-17 08:49:08

à ma connaissance, il n'y a pas de différence entre les types de données numériques et décimales. Ils sont synonymes les uns des autres et les deux peuvent être utilisés. Les types de données décimales et numériques sont des types de données numériques avec une précision et une échelle fixes.

Edit:

parlant à quelques collègues peut-être its a quelque chose à voir avec décimal étant la norme ANSI SQL et numérique étant un Mircosoft préfère comme son plus couramment trouvé dans les langages de programmation. ...Peut-être ;)

10
répondu kevchadders 2009-04-17 08:00:28

la réponse de Joakim Backman est spécifique, mais cela pourrait apporter plus de clarté.

il y a une différence mineure. Selon SQL For Dummies, 8ème édition (2013):

le type de données décimales est semblable à numérique. ... La différence est que votre application peut spécifier une précision supérieure à ce que vous spécifiez - le cas échéant, la mise en œuvre utilise la plus grande précision. Si vous ne pas préciser la précision ou l'échelle, le mise en œuvre utilise la valeur par défaut valeurs, comme il le fait avec le type numérique.

il semble que la différence sur quelques implémentations de SQL est dans l'intégrité des données. Décimal permet le débordement de ce qui est défini sur la base de certaines valeurs par défaut du système, où comme numérique ne le fait pas.

1
répondu Alex Firsov 2017-08-26 20:52:02

ce sont des synonymes, aucune différence.Les types de données décimales et numériques sont des types de données numériques avec une précision et une échelle fixes.

-- 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
0
répondu Raman Grewal 2016-08-17 22:18:26

Ils sont exactement les mêmes. Lorsque vous l'utilisez, soyez cohérent. Utilisez l'un d'eux dans votre base de données

-2
répondu Faruk 2018-09-05 15:28:43