Comment stocker des valeurs décimales dans SQL Server?

j'essaie de comprendre le type de données décimales d'une colonne dans le serveur SQL. J'ai besoin d'être en mesure de stocker des valeurs comme 15.5, à 26,9, 24.7, 9.8, etc

j'ai affecté decimal(18, 0) à la colonne type de données, mais cela ne m'autorise pas à stocker ces valeurs.

Quelle est la bonne façon de le faire?

229
demandé sur pnuts 2009-05-02 01:06:13

8 réponses

DECIMAL(18,0) permet 0 chiffres après le point décimal.

utilisez quelque chose comme DECIMAL(18,4) à la place qui devrait faire très bien!

qui vous donne un total de 18 chiffres , dont 4 après le point décimal (et 14 avant le point décimal).

448
répondu marc_s 2013-10-24 08:46:32

vous devez utiliser est comme suit:

DECIMAL(m,a)

m est le nombre total de chiffres que votre décimale peut avoir.

a est le nombre maximum de chiffres que vous pouvez avoir après le point décimal.

http://www.tsqltutorials.com/datatypes.php a des descriptions pour tous les types de données.

106
répondu DForck42 2016-06-02 16:29:48

les paramètres pour Decimal sont sa précision et l'échelle ou dans le langage normal, combien de chiffres peuvent avoir un nombre et combien de chiffres voulez-vous avoir à la droite du point décimal.

Donc, si vous mettez PI dans un Decimal(18,0) il sera enregistré comme 3 ?

Si vous mettez PI dans un Decimal(18,2) il sera enregistré comme 3.14 ?

si vous mettez PI dans Decimal(18,10) doit être enregistré comme 3.1415926535 .

40
répondu Rubens Mariuzzo 2013-07-15 19:34:02

pour la plupart du temps, j'utilise décimal(9,2) qui prend le moins de stockage (5 octets) en type décimal sql.


précision => octets de mémoire

  • 1 - 9 => 5
  • 10-19 => 9
  • 20-28 => 13
  • 29-38 => 17

il peut stocker de 0 jusqu'à 9 999 999,99 (infront à 7 chiffres + 2 chiffres derrière le point décimal = total à 9 chiffres), ce qui est assez grand pour la plupart des valeurs.

26
répondu Hnin Htet Htet Aung 2015-06-16 03:28:11

dans MySQL DB decimal(4,2) permet d'entrer seulement un total de 4 chiffres. Comme vous le voyez dans decimal(4,2) , cela signifie que vous pouvez entrer un total de 4 chiffres dont deux chiffres sont conçus pour garder après le point décimal.

ainsi, si vous entrez 100.0 dans la base de données MySQL, il affichera une erreur comme"hors de portée valeur pour colonne".

ainsi, vous pouvez entrer dans cette gamme seulement: de 00.00 à 99.99.

6
répondu Raja Done 2013-07-15 19:32:24

vous pouvez essayer ceci

decimal(18,1)

la longueur des nombres doit être totalement 18. La longueur des nombres après le point décimal devrait être 1 seulement et pas plus que cela.

4
répondu Biddut 2018-03-23 08:06:18

les autres réponses sont justes. En supposant que vos exemples reflètent la gamme complète des possibilités ce que vous voulez est DECIMAL(3, 1) . Ou, DECIMAL(14, 1) permettra un total de 14 chiffres. C'est ton travail de penser à ce qui est suffisant.

2
répondu Matthew Flaschen 2013-07-15 19:34:48
request.input("name", sql.Decimal, 155.33)              // decimal(18, 0)
request.input("name", sql.Decimal(10), 155.33)          // decimal(10, 0)
request.input("name", sql.Decimal(10, 2), 155.33)       // decimal(10, 2)
-1
répondu freya 2017-11-22 10:28:24