J'essaie de comprendre le type de données décimal d'une colonne dans SQL Server. Je dois pouvoir stocker des valeurs telles que 15.5, 26.9, 24.7, 9.8, etc.
J'ai affecté decimal(18, 0)
au type de données de la colonne, mais cela ne me permet pas de stocker ces valeurs.
Quel est le bon moyen de le faire?
DECIMAL(18,0)
autorisera 0 chiffres après le point décimal.
Utilisez quelque chose comme DECIMAL(18,4)
à la place, cela devrait suffire!
Cela vous donne un total de 18 chiffres, dont 4 après le point décimal (et 14 avant le point décimal).
Vous devriez 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.
Les paramètres de Decimal
correspondent à sa précision et à son échelle ou, en langage normal, au nombre de chiffres pouvant être compris dans un nombre et au nombre de chiffres souhaité à droite du point décimal.
Donc, si vous mettez PI
dans une Decimal(18,0)
, il sera enregistré en tant que 3
?
Si vous mettez PI
dans une Decimal(18,2)
, il sera enregistré en tant que 3.14
?
Si vous mettez PI
dans Decimal(18,10)
être enregistré comme 3.1415926535
.
La plupart du temps, j'utilise decimal (9,2), qui prend le moins de mémoire (5 octets) en type décimal sql.
Precision => Octets de stockage
Il peut stocker de 0 à 9 999 999,99 (7 chiffres en avant + 2 chiffres après la virgule = 9 chiffres au total), ce qui est suffisant pour la plupart des valeurs.
Tu peux essayer ça
decimal(18,1)
La longueur des nombres doit être au total de 18. La longueur des nombres après le point décimal doit être de 1 seulement et pas plus que cela.
Dans MySQL DB decimal(4,2)
ne permet d'entrer que 4 chiffres au total. Comme vous le voyez dans decimal(4,2)
, cela signifie que vous pouvez entrer un total de 4 chiffres, dont deux sont destinés à être conservés après le signe décimal.
Ainsi, si vous entrez 100.0 dans la base de données MySQL, une erreur du type "Valeur hors plage pour la colonne" s'affichera.
Vous ne pouvez donc entrer que dans cette plage: de 00,00 à 99,99.
Les autres réponses sont bonnes. En supposant que vos exemples reflètent toute la gamme des possibilités, ce que vous voulez est DECIMAL(3, 1)
. Ou, DECIMAL(14, 1)
permettra un total de 14 chiffres. C'est votre travail de penser à ce qui est suffisant.
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)