Types numériques - AWS Clean Rooms

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 données SMALLINT, INTEGER et BIGINTpour stocker les 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
SMALLINT 2 bytes -32768 à +32767
INTEGER ou INT 4 bytes -2147483648 à +2147483647
BIGINT 8 bytes -9223372036854775808 à 9223372036854775807

Type DECIMAL ou NUMERIC

Utilisez le type de données DECIMAL ou NUMERIC pour stocker les valeurs avec une précision définie par l’utilisateur. Les mots clés DECIMAL et NUMERIC 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 types DECIMAL non compressés. Entiers signés 128 bits avec précision maximale de 38 chiffres.

Définissez une colonne DECIMAL dans une table en spécifiant une precision (précision) et une scale (é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 décimale 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 (ni 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 colonne PRICEPAID de la table SALES est une colonne DECIMAL(8,2). Si une valeur DECIMAL(8,4) est insérée dans la colonne PRICEPAID, 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 (263 -1). La valeur négative maximale est -9223372036854775807. 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 de la virgule décimale, la plus grande chaîne qu' AWS Clean Rooms puisse représenter comme nombre DECIMAL est 9223372036854775807. Par exemple, la plus grande valeur que vous puissiez charger dans une colonne DECIMAL(19,18) est 9.223372036854775807.

Ces règles sont dues aux raisons suivantes :

  • Les valeurs DECIMAL dont la précision est inférieure ou égale à 19 chiffres significatifs sont stockées en interne sous forme de nombres entiers de 8 octets.

  • Les valeurs DECIMAL avec une précision de 20 à 38 chiffres significatifs sont stockées sous forme de nombres entiers de 16 octets.

Notes sur l’utilisation des colonnes DECIMAL ou NUMERIC 128 bits

N’attribuez pas de façon arbitraire une précision maximale aux colonnes DECIMAL, sauf si vous avez la certitude que votre application a besoin de cette précision. 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 données REAL et DOUBLE PRECISION pour stocker les 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 d’un calcul exacts (pour des montants monétaires, par exemple), utilisez le type de données DECIMAL.

REAL représente le format à virgule flottante à précision unique, conformément à la norme IEEE 754 pour l'arithmétique à 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 comme FLOAT4.

DOUBLE PRECISION représente le format de virgule flottante en double précision, conformément à la norme IEEE 754 pour l’arithmétique binaire en 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 comme FLOAT ou FLOAT8.