FirebirdSQL logo

NUMERIC

Format déclarative des données
  NUMERIC
| NUMERIC(precision)
| NUMERIC(precision, scale)
Table 1. Paramètres de type NUMERIC
Paramètre ^^ Description

precision

Précision. Peut être compris entre 1 et 38.Le paramètre par défaut est 9.

scale

Scale. Peut aller de 0 à précision.Le paramètre par défaut est 0.

En fonction de la précision precision et de l’échelle scale, le SGBD stocke les données différemment.

Voici des exemples de la manière dont un SGBD stocke les données en fonction de la forme sous laquelle elles sont déclarées :

NUMERIC(4)    stored as   SMALLINT (exact data)
NUMERIC(4,2)              SMALLINT (data * 102)
NUMERIC(10,4) (Dialect 1) DOUBLE PRECISION
              (Dialect 3) BIGINT (data * 104)
NUMERIC(38, 6)            INT128 (data * 106)
Caution

N’oubliez jamais que le format de stockage des données dépend de leur précision.Par exemple, vous avez spécifié un type de colonne NUMERIC(2, 2), en supposant que la plage de valeurs de cette colonne sera -0.99…​0.99.Cependant, en réalité, la plage de valeurs de la colonne serait de -327,68…​327,67, ce qui est dû au stockage du type de données NUMERIC(2, 2) au format SMALLINT.En fait, les types de données NUMERIC(4, 2), NUMERIC(3, 2) et NUMERIC(2, 2) sont les mêmes.

Ainsi, pour réellement stocker des données dans une colonne dont le type de données est NUMERIC(2, 2) dans la plage -0,99…​0,99, vous devez créer une limite pour celle-ci.

DECIMAL

Format déclarative des données
  DECIMAL
| DECIMAL(precision)
| DECIMAL(precision, scale)
Table 1. Paramètres de type DECIMAL
Paramètre ^^ Description

precision

Précision. Peut être compris entre 1 et 38.Le paramètre par défaut est 9.

scale

Scale. Peut aller de 0 à précision.Le paramètre par défaut est 0.

Le format de stockage de la base de données est largement similaire à celui de `NUMERIC', bien qu’il y ait certaines caractéristiques qui sont plus faciles à expliquer avec un exemple.

Voici des exemples de la manière dont la base de données stocke les données en fonction de la manière dont elles sont déclarées :

DECIMAL(4)    stored as   INTEGER (exact data)
DECIMAL(4,2)              INTEGER (data * 102)
DECIMAL(10,4) (Dialect 1) DOUBLE PRECISION
              (Dialect 3) BIGINT (data * 104)
DECIMAL(38, 6)            INT128 (data * 106)