à quoi servent les types de données decimal
et numeric
dans postgreSQL. Selon la référence, ce qui suit est l'explication donnée à ces types de données.
Decimal,numeric --> It is a user specified precision, exact and range up to 131072 digits before the decimal point and up to 16383 digits after the decimal point.
L'instruction ci-dessus montre la description du type de données decimal
et numeric
. Mais, je ne comprenais toujours pas quelle est l'utilisation exacte de ces types de données et où ils sont utilisés à la place d'autres types de données.
La réponse avec l'exemple est très appréciée ...
Les types
decimal
etnumeric
sont équivalents. Les deux types font partie de la norme SQL.
Quant au "pourquoi dois-je l'utiliser", il est également expliqué dans le manuel:
Le type numérique peut stocker des nombres avec un très grand nombre de chiffres et effectuer des calculs exactement
(Je souligne).
Si vous avez besoin de nombres avec des décimales, utilisez decimal
(ou numeric
) si vous avez besoin de nombres sans décimales, utilisez integer
ou bigint
. Une utilisation typique de decimal
comme type de colonne serait une colonne "prix du produit" ou un "taux d'intérêt". Une utilisation typique d'un type entier serait par exemple une colonne qui stocke comment beaucoup produits ont été commandés (en supposant que vous ne pouvez pas commander "la moitié" d'un produit).
double
et real
sont également des types qui peuvent stocker des valeurs décimales, mais ce sont des types approximatifs . Cela signifie que vous ne récupérez pas nécessairement la valeur que vous avez stockée. Pour plus de détails, veuillez consulter: http://floating-point-gui.de/
Cité directement de https://www.postgresql.org/message-id/[email protected]
Il n'y a aucune différence, à Postgres. Il existe deux noms de types car la norme SQL nous oblige à accepter les deux noms. En un coup d'œil dans la norme, il apparaît que la seule différence est la suivante:
17)NUMERIC specifies the data type exact numeric, with the decimal precision and scale specified by the <precision> and <scale>. 18)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>.
c'est-à-dire que pour DECIMAL, l'implémentation est autorisée à autoriser plus de chiffres que demandé à gauche du séparateur décimal. Postgres n'exerce pas cette liberté, il n'y a donc pas de différence entre ces types pour nous.
regards, tom lane
Ils sont synonymes les uns des autres et fonctionnellement identiques. La norme SQL: 20 dit:
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>.