Types numériques - Amazon Redshift

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

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-number

  • Infinity : 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');