FirebirdSQL logo

Constantes numériques

Une constante numérique est un nombre valide dans l’une des notations prises en charge :

  • En SQL, pour les nombres en notation décimale standard, le point décimal est toujours représenté par un caractère de point et les milliers ne sont pas séparés. L’inclusion de virgules, d’espaces, etc. entraînera des erreurs.

  • Notation exponentielle, par exemple le nombre 0.0000234 peut être écrit comme 2.34e-5.

  • La notation hexadécimale (voir ci-dessous) des nombres est supportée à partir de Firebird 2.5.

Le tableau suivant présente les formats des littéraux numériques et leurs types.Où <d> est un chiffre décimal, <h> est un chiffre hexadécimal.

Table 1. Format des constantes numériques
Format Type

<d>[<d> …​]

INTEGER, BIGINT, INT128 ou DECFLOAT(34) (dépend du fait que la valeur corresponde ou non au type de). DECFLOAT(34) est utilisé pour les valeurs qui ne rentrent pas dans le type INT128.

0{x|X} <h>[<h> …​]

INTEGER pour les chiffres hexadécimaux de 1 à 8, BIGINT pour les chiffres de 9 à 16, INT128 pour les chiffres de 17 à 32 (disponible avec Firebird 4.0.1).

<d>[<d> …​].[<d> …​]

NUMERIC(18, n), NUMERIC(38, n) ou DECFLOAT(34)n dépend du nombre de chiffres après la virgule et la précision du nombre total de chiffres.

Pour des raisons de compatibilité ascendante, certaines valeurs à 19 chiffres sont mappées en NUMERIC(18, n).DECFLOAT(34) est utilisé lorsque la valeur non scalée ne tient pas dans INT128.

<d>[<d> …​][. [<d> …​]] E <d>[<d> …​]

DOUBLE PRECISION ou DECFLOAT(34), où DECFLOAT n’est utilisé que si le nombre de chiffres est égal ou supérieur à 20, ou si la valeur absolue de l’exposant est égale ou supérieure à 309.

Notation hexadécimale des nombres

Les constantes entières peuvent être spécifiées au format hexadécimal.A partir de Firebird 4.0.1, les nombres composés de 17 à 32 chiffres hexadécimaux seront interprétés comme INT128.

Syntaxe:
{x|X}<hexdigits>

<hexdigits> ::= 1-32 of <hexdigit>

<hexdigit> ::= 0..9 | A..F | a..f
Table 1. Constantes de types entiers au format hexadécimal
Nombre de chiffres hexadécimaux Type de données

1-8

INTEGER

9-16

BIGINT

17-32

INT128

Example 1. Constantes hexadécimales
SELECT 0x6FAA0D3 FROM rdb$database -- returns 117088467
SELECT 0x4F9 FROM rdb$database -- returns 1273
SELECT 0x6E44F9A8 FROM rdb$database -- returns 1850014120
SELECT 0x9E44F9A8 FROM rdb$database -- returns -1639646808 (INTEGER)
SELECT 0x09E44F9A8 FROM rdb$database -- returns 2655320488 (BIGINT)
SELECT 0x28ED678A4C987 FROM rdb$database -- returns 720001751632263
SELECT 0xFFFFFFFFFFFFFFFF FROM rdb$database -- returns -1