Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Types numériques
Rubriques
Les types de données numériques incluent les entiers, les décimaux et les nombres à virgule flottante.
Types d’entier
Utilisez les types de BIGINT données SMALLINTINTEGER, et pour stocker des nombres entiers de différentes plages. Vous ne pouvez pas stocker de valeurs en dehors de la plage autorisée pour chaque type.
Nom | Stockage | Range |
---|---|---|
SMALLINTou INT2 | 2 bytes | -32768 à +32767 |
INTEGERINT, ou INT4 | 4 bytes | -2147483648 à +2147483647 |
BIGINTou INT8 | 8 bytes | -9223372036854775808 à 9223372036854775807 |
DECIMALou NUMERIC tapez
Utilisez le type de NUMERIC données DECIMAL ou pour stocker des valeurs avec une précision définie par l'utilisateur. Les NUMERIC mots clés DECIMAL et sont interchangeables. Dans ce document, decimal est le terme privilégié pour ce type de données. Le terme numeric (numérique) est utilisé de façon générique pour faire référence aux types de données integer, decimal et floating-point (entier, décimal et virgule flottante).
Stockage | Range |
---|---|
Variable, jusqu'à 128 bits pour les DECIMAL types non compressés. | Entiers signés 128 bits avec précision maximale de 38 chiffres. |
Définissez une DECIMAL colonne dans un tableau en spécifiant une précision et une échelle :
decimal(precision, scale)
- precision
-
Le nombre total de chiffres significatifs dans la valeur entière : le nombre de chiffres de chaque côté de la virgule. Par exemple, le nombre
48.2891
a une précision de 6 et une échelle de 4. La précision par défaut, si elle n’est pas spécifiée, est de 18. La précision maximale est de 38.Si le nombre de chiffres à gauche de la virgule dans une valeur d’entrée dépasse la précision de la colonne moins son échelle, la valeur ne peut pas être copiée dans la colonne (ou insérée ou mise à jour). Cette règle s’applique à toute valeur qui se trouve en dehors de la plage de la définition de la colonne. Par exemple, la plage autorisée de valeurs pour une colonne
numeric(5,2)
s’étend de-999.99
à999.99
. - échelle
-
Le nombre de chiffres décimaux de la partie fractionnaire de la valeur, à droite de la virgule. Les entiers possèdent une échelle égale à zéro. Dans une spécification de colonne, la valeur de l’échelle doit être inférieure ou égale à la valeur de la précision. L’échelle par défaut, si elle n’est pas spécifiée, est de 0. L’échelle maximale est de 37.
Si l’échelle d’une valeur d’entrée chargée dans une table est supérieure à l’échelle de la colonne, la valeur est arrondie à l’échelle spécifiée. Par exemple, la PRICEPAID colonne du SALES tableau est une colonne DECIMAL (8,2). Si une valeur DECIMAL (8,4) est insérée dans la PRICEPAID colonne, la valeur est arrondie à une échelle de 2.
insert into sales values (0, 8, 1, 1, 2000, 14, 5, 4323.8951, 11.00, null); select pricepaid, salesid from sales where salesid=0; pricepaid | salesid -----------+--------- 4323.90 | 0 (1 row)
Cependant, les résultats de conversions explicites de valeurs sélectionnées dans les tables ne sont pas arrondis.
Note
La valeur positive maximale que vous pouvez insérer dans une colonne DECIMAL (19,0) est 9223372036854775807
(2 63 -1). La valeur négative maximale est -9223372036854775808
. Par exemple, une tentative d’insérer la valeur 9999999999999999999
(19 fois le chiffre neuf) entraîne une erreur de dépassement de capacité. Quel que soit le placement du point décimal, la plus grande chaîne qu'Amazon Redshift peut représenter sous forme de nombre DECIMAL est. 9223372036854775807
Par exemple, la plus grande valeur que vous pouvez charger dans une colonne DECIMAL (19,18) est. 9.223372036854775807
Ces règles sont dues au fait que DECIMAL les valeurs avec une précision de 19 chiffres significatifs ou moins sont stockées en interne sous forme d'entiers de 8 octets, tandis que DECIMAL les valeurs avec une précision de 20 à 38 chiffres significatifs sont stockées sous forme d'entiers de 16 octets.
Remarques concernant l'utilisation de 128 bits ou DECIMAL de colonnes NUMERIC
N'attribuez pas arbitrairement une précision maximale aux DECIMAL colonnes, sauf si vous êtes certain que votre application l'exige. Les valeurs 128 bits utilisent deux fois plus d'espace disque que les valeurs 64 bits et peuvent ralentir le temps d'exécution des requêtes.
Types à virgule flottante
Utilisez les types de DOUBLE PRECISION données REAL et pour stocker des valeurs numériques avec une précision variable. Ces types sont des types inexacts, ce qui signifie que certaines valeurs sont stockées comme approximations, de telle sorte que le stockage et le retour d’une valeur spécifique peuvent se traduire par de légers écarts. Si vous avez besoin d'un stockage et de calculs précis (par exemple pour les montants monétaires), utilisez le type de DECIMAL données.
REALreprésente le format à virgule flottante à précision unique, conformément à la IEEE norme 754 pour l'arithmétique binaire à virgule flottante. Il a une précision d’environ 6 chiffres et une plage d’environ 1E-37 à 1E+37. Vous pouvez également spécifier ce type de données sous la formeFLOAT4.
DOUBLEPRECISIONreprésente le format à virgule flottante à double précision, conformément à la IEEE norme 754 pour l'arithmétique binaire à virgule flottante. Il a une précision d’environ 15 chiffres et une plage d’environ 1E-307 à 1E+308. Vous pouvez également spécifier ce type de données sous la forme FLOAT ouFLOAT8.
Outre les valeurs numériques ordinaires, les types à virgule flottante possèdent plusieurs valeurs spéciales. Utilisez des guillemets simples autour de ces valeurs lorsque vous les utilisez dans SQL :
NaN
– not-a-numberInfinity
: infini-Infinity
: infini négatif
Par exemple, pour insérer not-a-number dans une colonne day_charge
de table, customer_activity
exécutez ce qui suit SQL :
insert into customer_activity(day_charge) values('NaN');